)]}'
{"specs/ocata/approved/deprecate-multinic-floatingip-actions-proxy-api.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8ad5f0d390b0a10cebd9b5ae02982bf718c85c6a","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The `multinic` API is used to add new interface to the instance by"},{"line_number":21,"context_line":"`network_id`. The API supports both nova-network and neutron backend. The"},{"line_number":22,"context_line":"nova-networks is deprecated, and the `os-attach-interfaces` API can do the"},{"line_number":23,"context_line":"same thing with neutron. So there isn\u0027t any reason keep this duplicated API"},{"line_number":24,"context_line":"at here."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"The `floatingip actions` API is used to associate floating ip with the"},{"line_number":27,"context_line":"interface of instance. The API supports both nova-network and neutron backend."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_a5cb69a4","line":24,"range":{"start_line":20,"start_character":0,"end_line":24,"end_character":8},"updated":"2016-10-12 19:26:46.000000000","message":"The actual network API calls are different though, so aren\u0027t the semantics too? os-attach-interfaces eventually gets to call network_api.allocate_port_for_instance which is only implemented for neutron.\n\nCan you give an example of how os-attach-interfaces can be used in place of multinic for the neutron case using the CLI, like what you have below for associating a floating IP to an instance?","commit_id":"0142bec7c3817911de49dce90288e6c6cbd7768d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4b8a13ee32a6a0b28d51042f066d3d4423caa3aa","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The `multinic` API is used to add new interface to the instance by"},{"line_number":21,"context_line":"`network_id`. The API supports both nova-network and neutron backend. The"},{"line_number":22,"context_line":"nova-networks is deprecated, and the `os-attach-interfaces` API can do the"},{"line_number":23,"context_line":"same thing with neutron. So there isn\u0027t any reason keep this duplicated API"},{"line_number":24,"context_line":"at here."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"The `floatingip actions` API is used to associate floating ip with the"},{"line_number":27,"context_line":"interface of instance. The API supports both nova-network and neutron backend."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_c80dd438","line":24,"range":{"start_line":20,"start_character":0,"end_line":24,"end_character":8},"in_reply_to":"fa6399be_a5cb69a4","updated":"2016-10-12 19:38:10.000000000","message":"Another thing is, add-fixed-ip (multinic) takes only a network id, it doesn\u0027t take a specific fixed IP.\n\nos-attach-interface takes either a port, network id, or network id + fixed IP. If you specify a fixed IP, you must specify a network. If you only specify a network, it creates a new port for you on that network and associates it to the instance.\n\nSo there are differences here.","commit_id":"0142bec7c3817911de49dce90288e6c6cbd7768d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7c06461936434d66de46a67c01be63e9c571bf0d","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The `multinic` API is used to add new interface to the instance by"},{"line_number":21,"context_line":"`network_id`. The API supports both nova-network and neutron backend. The"},{"line_number":22,"context_line":"nova-networks is deprecated, and the `os-attach-interfaces` API can do the"},{"line_number":23,"context_line":"same thing with neutron. So there isn\u0027t any reason keep this duplicated API"},{"line_number":24,"context_line":"at here."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"The `floatingip actions` API is used to associate floating ip with the"},{"line_number":27,"context_line":"interface of instance. The API supports both nova-network and neutron backend."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_d6d727bd","line":24,"range":{"start_line":20,"start_character":0,"end_line":24,"end_character":8},"in_reply_to":"fa6399be_c80dd438","updated":"2016-10-13 08:11:51.000000000","message":"Yea, I will update.\n\nAnd yes, we have two code paths for attach an interface \u0027allocate_port_for_instance\u0027 and \u0027add_fixed_ip_to_instance\u0027. It is hard to maintenance two paths consistently. The implementation of \u0027add_fixed_ip_to_instance\u0027 is pretty simple, I guess it probably missed something.","commit_id":"0142bec7c3817911de49dce90288e6c6cbd7768d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"62e200dd9a1ea9cd8f3e8f3afc2a7bc46ec2d5fa","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The `multinic` API is used to add new interface to the instance by"},{"line_number":21,"context_line":"`network_id`. The API supports both nova-network and neutron backend. The"},{"line_number":22,"context_line":"nova-networks is deprecated, and the `os-attach-interfaces` API can do the"},{"line_number":23,"context_line":"same thing with neutron. So there isn\u0027t any reason keep this duplicated API"},{"line_number":24,"context_line":"at here."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"The `floatingip actions` API is used to associate floating ip with the"},{"line_number":27,"context_line":"interface of instance. The API supports both nova-network and neutron backend."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_2dc1e954","line":24,"range":{"start_line":20,"start_character":0,"end_line":24,"end_character":8},"in_reply_to":"fa6399be_d6d727bd","updated":"2016-10-13 09:39:34.000000000","message":"Yeah, worth the extra context.\n\nIts not a direct replacement, its an \"idiomatic\" replacement (if thats a thing), so I didn\u0027t want to block on the extra context, as it doesn\u0027t affect the implementation or user docs here.","commit_id":"0142bec7c3817911de49dce90288e6c6cbd7768d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8ad5f0d390b0a10cebd9b5ae02982bf718c85c6a","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"The `floatingip actions` API is used to associate floating ip with the"},{"line_number":27,"context_line":"interface of instance. The API supports both nova-network and neutron backend."},{"line_number":28,"context_line":"For nova-network is deprecated, we needn\u0027t this API anymore. For neutron,"},{"line_number":29,"context_line":"the API implement is kind of proxy of neutron API."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"To associate floating ip with instance by `floatingip actions` API, the end"},{"line_number":32,"context_line":"user needs to do as below::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_c5b85de8","line":29,"range":{"start_line":28,"start_character":61,"end_line":29,"end_character":50},"updated":"2016-10-12 19:26:46.000000000","message":"Yes this is definitely true:\n\nhttps://github.com/openstack/nova/blob/14.0.1/nova/network/neutronv2/api.py#L1682\n\nHowever, if you don\u0027t do this through nova anymore, nova will have a stale network info_cache for the floating IPs associated with the instance. How do we reconcile that outside of the _heal_instance_info_cache periodic task in the compute manager? I guess this is already an issue today for anyone doing this directly in neutron, but it would be made worse by removing this ability in the compute API.\n\nAs discussed in the nova-api meeting today, John pointed out that we could get rid of the info_cache, but I\u0027d think that would be a pre-requisite to this...something to think about.\n\nThe other way this might be handled out of band today is if neutron sends a vif updated event to nova when the port/floating IP are associated. Does nova get a \u0027network-changed\u0027 event from neutron when this happens?\n\nWe might need a tempest test before we land this to make sure something isn\u0027t regressed.","commit_id":"0142bec7c3817911de49dce90288e6c6cbd7768d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7c06461936434d66de46a67c01be63e9c571bf0d","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"The `floatingip actions` API is used to associate floating ip with the"},{"line_number":27,"context_line":"interface of instance. The API supports both nova-network and neutron backend."},{"line_number":28,"context_line":"For nova-network is deprecated, we needn\u0027t this API anymore. For neutron,"},{"line_number":29,"context_line":"the API implement is kind of proxy of neutron API."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"To associate floating ip with instance by `floatingip actions` API, the end"},{"line_number":32,"context_line":"user needs to do as below::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_825ba52d","line":29,"range":{"start_line":28,"start_character":61,"end_line":29,"end_character":50},"in_reply_to":"fa6399be_2522f900","updated":"2016-10-13 08:11:51.000000000","message":"yea, I prefer to delay the deprecate when have any concern. \n\nI prefer the user go to the neutron directly. and yes, it is bad for user, but that is API user(emm...what is best ux for API user?, a flexible API?). The UI and CLI can provide a better ux for user.","commit_id":"0142bec7c3817911de49dce90288e6c6cbd7768d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"62e200dd9a1ea9cd8f3e8f3afc2a7bc46ec2d5fa","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"The `floatingip actions` API is used to associate floating ip with the"},{"line_number":27,"context_line":"interface of instance. The API supports both nova-network and neutron backend."},{"line_number":28,"context_line":"For nova-network is deprecated, we needn\u0027t this API anymore. For neutron,"},{"line_number":29,"context_line":"the API implement is kind of proxy of neutron API."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"To associate floating ip with instance by `floatingip actions` API, the end"},{"line_number":32,"context_line":"user needs to do as below::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_9db14a92","line":29,"range":{"start_line":28,"start_character":61,"end_line":29,"end_character":50},"in_reply_to":"fa6399be_825ba52d","updated":"2016-10-13 09:39:34.000000000","message":"I thought neutron sends a \"network-changed\" event to nova I believe:\nhttps://github.com/openstack/neutron/blob/49d614895f44c44f9e1735210498facf1886c404/neutron/notifiers/nova.py#L147\nand\nhttps://github.com/openstack/nova/blob/master/nova/objects/external_event.py#L20\n\nIf we miss that API call/event, then you wait until the info_cache refreshes.\n\nI am not sure there is a huge cost of the floating ip being stale. Horizon now gets all the port info from Neutron, and we should tell all our users to do that, somehow.\n\nEither way, I really don\u0027t think we want Nova involved in a purely port related API call.","commit_id":"0142bec7c3817911de49dce90288e6c6cbd7768d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b2b03cbd31dfba314d2a78a34a2addd8eb873e75","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"The `floatingip actions` API is used to associate floating ip with the"},{"line_number":27,"context_line":"interface of instance. The API supports both nova-network and neutron backend."},{"line_number":28,"context_line":"For nova-network is deprecated, we needn\u0027t this API anymore. For neutron,"},{"line_number":29,"context_line":"the API implement is kind of proxy of neutron API."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"To associate floating ip with instance by `floatingip actions` API, the end"},{"line_number":32,"context_line":"user needs to do as below::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_b42d16aa","line":29,"range":{"start_line":28,"start_character":61,"end_line":29,"end_character":50},"in_reply_to":"fa6399be_9db14a92","updated":"2016-10-14 06:20:57.000000000","message":"Thanks John point that out. I tested, there is event send out from neutron when associate/disassociate floatingip. Except there is bug in neutron https://bugs.launchpad.net/neutron/+bug/1633337 which I spend some time to debug....","commit_id":"0142bec7c3817911de49dce90288e6c6cbd7768d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c68965fe587fee1afed81e161052bf4a75b28c91","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"The `floatingip actions` API is used to associate floating ip with the"},{"line_number":27,"context_line":"interface of instance. The API supports both nova-network and neutron backend."},{"line_number":28,"context_line":"For nova-network is deprecated, we needn\u0027t this API anymore. For neutron,"},{"line_number":29,"context_line":"the API implement is kind of proxy of neutron API."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"To associate floating ip with instance by `floatingip actions` API, the end"},{"line_number":32,"context_line":"user needs to do as below::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_2522f900","line":29,"range":{"start_line":28,"start_character":61,"end_line":29,"end_character":50},"in_reply_to":"fa6399be_c5b85de8","updated":"2016-10-12 19:28:44.000000000","message":"On the other hand, maybe with this, we\u0027re saying effectively, if you want to know what floating IPs are associated with a given instance, you list the floating IPs by port id where the port is associated to a particular device_id which is equal to the server you care about. That\u0027s possible, but it kind of sucks as a workflow.","commit_id":"0142bec7c3817911de49dce90288e6c6cbd7768d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1522c30af22d508cc2c82805e45076c1ae7bf9dc","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"With neutron, the end user need to do as below::"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    neutron floatingip-create EXT_NET_ID"},{"line_number":40,"context_line":"    neutron floatingip-associate FLOATING_IP_ID VM_PORT_ID"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Use Cases"},{"line_number":43,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_a88420d4","line":40,"range":{"start_line":39,"start_character":4,"end_line":40,"end_character":58},"updated":"2016-10-12 20:04:24.000000000","message":"FWIW, I\u0027m having a hell of a time trying to remember and figure out how to do this with devstack. The networking guide isn\u0027t much help as it doesn\u0027t mention floating IPs:\n\nhttp://docs.openstack.org/newton/networking-guide/\n\nAnd the docs that do talk about floating IPs with instances is using nova CLIs:\n\nhttp://docs.openstack.org/user-guide/cli-manage-ip-addresses.html","commit_id":"0142bec7c3817911de49dce90288e6c6cbd7768d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4ef66a218b71a4c9d6c1ab69a722f17066b03ee7","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"With neutron, the end user need to do as below::"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    neutron floatingip-create EXT_NET_ID"},{"line_number":40,"context_line":"    neutron floatingip-associate FLOATING_IP_ID VM_PORT_ID"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Use Cases"},{"line_number":43,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_c848748a","line":40,"range":{"start_line":39,"start_character":4,"end_line":40,"end_character":58},"in_reply_to":"fa6399be_a88420d4","updated":"2016-10-12 20:10:30.000000000","message":"I always have to go back to this old red hat doc:\n\nhttps://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/6/html/Administration_Guide/IPAddressing.html","commit_id":"0142bec7c3817911de49dce90288e6c6cbd7768d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"62e200dd9a1ea9cd8f3e8f3afc2a7bc46ec2d5fa","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"With neutron, the end user need to do as below::"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    neutron floatingip-create EXT_NET_ID"},{"line_number":40,"context_line":"    neutron floatingip-associate FLOATING_IP_ID VM_PORT_ID"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Use Cases"},{"line_number":43,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_3d359ef6","line":40,"range":{"start_line":39,"start_character":4,"end_line":40,"end_character":58},"in_reply_to":"fa6399be_c848748a","updated":"2016-10-13 09:39:34.000000000","message":"yuck :(\n\nWe should let the neutron folks know about that.","commit_id":"0142bec7c3817911de49dce90288e6c6cbd7768d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"97c7019fb75c55745178cdf7c77023d616a38f22","unresolved":false,"context_lines":[{"line_number":83,"context_line":"Other end user impact"},{"line_number":84,"context_line":"---------------------"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The ``nova add-fixed-ip`` and ``floating-ip-associate`` CLI will be clamp"},{"line_number":87,"context_line":"to new microversion. When user request the version \u003e\u003d the new microversion,"},{"line_number":88,"context_line":"the CLI will fallback to old microversion automatically. The python API"},{"line_number":89,"context_line":"binding will be cap to the new microversion, return fault explicitly when"},{"line_number":90,"context_line":"user request \u003e\u003d new microversion."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_daff6cff","line":87,"range":{"start_line":86,"start_character":65,"end_line":87,"end_character":19},"updated":"2016-10-12 14:32:46.000000000","message":"Nit: I know what you mean, but not sure that reads brilliantly. Maybe just drop that text if we need a respin.","commit_id":"0142bec7c3817911de49dce90288e6c6cbd7768d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7c06461936434d66de46a67c01be63e9c571bf0d","unresolved":false,"context_lines":[{"line_number":83,"context_line":"Other end user impact"},{"line_number":84,"context_line":"---------------------"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The ``nova add-fixed-ip`` and ``floating-ip-associate`` CLI will be clamp"},{"line_number":87,"context_line":"to new microversion. When user request the version \u003e\u003d the new microversion,"},{"line_number":88,"context_line":"the CLI will fallback to old microversion automatically. The python API"},{"line_number":89,"context_line":"binding will be cap to the new microversion, return fault explicitly when"},{"line_number":90,"context_line":"user request \u003e\u003d new microversion."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_4278ad8f","line":87,"range":{"start_line":86,"start_character":65,"end_line":87,"end_character":19},"in_reply_to":"fa6399be_0579752f","updated":"2016-10-13 08:11:51.000000000","message":"Emm...I choice...drop the text :)","commit_id":"0142bec7c3817911de49dce90288e6c6cbd7768d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8ad5f0d390b0a10cebd9b5ae02982bf718c85c6a","unresolved":false,"context_lines":[{"line_number":83,"context_line":"Other end user impact"},{"line_number":84,"context_line":"---------------------"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"The ``nova add-fixed-ip`` and ``floating-ip-associate`` CLI will be clamp"},{"line_number":87,"context_line":"to new microversion. When user request the version \u003e\u003d the new microversion,"},{"line_number":88,"context_line":"the CLI will fallback to old microversion automatically. The python API"},{"line_number":89,"context_line":"binding will be cap to the new microversion, return fault explicitly when"},{"line_number":90,"context_line":"user request \u003e\u003d new microversion."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_0579752f","line":87,"range":{"start_line":86,"start_character":65,"end_line":87,"end_character":19},"in_reply_to":"fa6399be_daff6cff","updated":"2016-10-12 19:26:46.000000000","message":"Or replace \u0027clamp\u0027 with \u0027capped at the new microversion\u0027.","commit_id":"0142bec7c3817911de49dce90288e6c6cbd7768d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8e6035c7fdc2070fc7ec8ee33e2ee50b433d4ee2","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The semantics of `multinic` API is add new fixed ip to the instance in specific"},{"line_number":21,"context_line":"network. Due to nova-network is deprecated, its case won\u0027t be consider. For"},{"line_number":22,"context_line":"Neutron, actually the implementation is create new port in specified network"},{"line_number":23,"context_line":"and attach it to the instance. The `os-attach-interfaces` API can do the same"},{"line_number":24,"context_line":"thing for the user. The semantics of `os-attach-interfaces` API is add new"},{"line_number":25,"context_line":"interface to instance, and takes either a port, network, or network + fixed ip."},{"line_number":26,"context_line":"So if you only specify a `network_id`, it creates a new port for you on that"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_c02384bb","line":23,"range":{"start_line":21,"start_character":72,"end_line":23,"end_character":30},"updated":"2016-10-14 19:37:06.000000000","message":"That\u0027s not the same case for neutron wrt the multinic API:\n\nhttps://github.com/openstack/nova/blob/14.0.1/nova/network/neutronv2/api.py#L1339\n\nThat method doesn\u0027t create anything. I\u0027ve actually always had a really hard time following what that method does and if it even works. I think it\u0027s getting the subnets for the given network, then getting the ports associated to the instance on that same network and then updating the ports to associated the fixed IPs on the ports to the subnets on the network.\n\nI don\u0027t know if it really works. There is a tempest test for it but it just tests that the API doesn\u0027t explode:\n\nhttps://github.com/openstack/tempest/blob/13.0.0/tempest/api/compute/servers/test_attach_interfaces.py#L252","commit_id":"b18227e35984270378a00e3ecf580a5798b8d1ff"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"614576eacbc74290513d323f3b3dd3541bca44c1","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The semantics of `multinic` API is add new fixed ip to the instance in specific"},{"line_number":21,"context_line":"network. Due to nova-network is deprecated, its case won\u0027t be consider. For"},{"line_number":22,"context_line":"Neutron, actually the implementation is create new port in specified network"},{"line_number":23,"context_line":"and attach it to the instance. The `os-attach-interfaces` API can do the same"},{"line_number":24,"context_line":"thing for the user. The semantics of `os-attach-interfaces` API is add new"},{"line_number":25,"context_line":"interface to instance, and takes either a port, network, or network + fixed ip."},{"line_number":26,"context_line":"So if you only specify a `network_id`, it creates a new port for you on that"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_3d3aa299","line":23,"range":{"start_line":21,"start_character":72,"end_line":23,"end_character":30},"in_reply_to":"fa6399be_6a1e0e71","updated":"2016-10-15 03:31:18.000000000","message":"From this doc http://docs.openstack.org/admin-guide/compute-networking-nova.html, looks like the multinic for the nova-network is similar to os-attach-interface","commit_id":"b18227e35984270378a00e3ecf580a5798b8d1ff"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4c1469607a75e42c138c282de48714f481b4d462","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The semantics of `multinic` API is add new fixed ip to the instance in specific"},{"line_number":21,"context_line":"network. Due to nova-network is deprecated, its case won\u0027t be consider. For"},{"line_number":22,"context_line":"Neutron, actually the implementation is create new port in specified network"},{"line_number":23,"context_line":"and attach it to the instance. The `os-attach-interfaces` API can do the same"},{"line_number":24,"context_line":"thing for the user. The semantics of `os-attach-interfaces` API is add new"},{"line_number":25,"context_line":"interface to instance, and takes either a port, network, or network + fixed ip."},{"line_number":26,"context_line":"So if you only specify a `network_id`, it creates a new port for you on that"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_6a1e0e71","line":23,"range":{"start_line":21,"start_character":72,"end_line":23,"end_character":30},"in_reply_to":"fa6399be_c02384bb","updated":"2016-10-15 03:02:51.000000000","message":"Sorry, I make mistake, totally talk about wrong thing at here.\n\nI tested it, it works. It adds new fixed from existed port and the subnet from specific network. I\u0027m also don\u0027t know what is the use-case at here. Check the original patch https://review.openstack.org/#/c/19627/, I feel it is just going to implement those API to make parity with nova API.","commit_id":"b18227e35984270378a00e3ecf580a5798b8d1ff"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8e6035c7fdc2070fc7ec8ee33e2ee50b433d4ee2","unresolved":false,"context_lines":[{"line_number":24,"context_line":"thing for the user. The semantics of `os-attach-interfaces` API is add new"},{"line_number":25,"context_line":"interface to instance, and takes either a port, network, or network + fixed ip."},{"line_number":26,"context_line":"So if you only specify a `network_id`, it creates a new port for you on that"},{"line_number":27,"context_line":"network and associates it to the instance. This is totally same with the"},{"line_number":28,"context_line":"`multinic` API. The example of add new interface with specific \u0027network_id\u0027 by"},{"line_number":29,"context_line":"`multinic` API and `os-attach-interface` as below::"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    To add new interface with `multinic` API"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_03182674","line":28,"range":{"start_line":27,"start_character":43,"end_line":28,"end_character":15},"updated":"2016-10-14 19:37:06.000000000","message":"It\u0027s not though because the multinic API doesn\u0027t create a new port on the network for the instance, it\u0027s binding ports/fixed IPs to subnets on the network.","commit_id":"b18227e35984270378a00e3ecf580a5798b8d1ff"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4c1469607a75e42c138c282de48714f481b4d462","unresolved":false,"context_lines":[{"line_number":24,"context_line":"thing for the user. The semantics of `os-attach-interfaces` API is add new"},{"line_number":25,"context_line":"interface to instance, and takes either a port, network, or network + fixed ip."},{"line_number":26,"context_line":"So if you only specify a `network_id`, it creates a new port for you on that"},{"line_number":27,"context_line":"network and associates it to the instance. This is totally same with the"},{"line_number":28,"context_line":"`multinic` API. The example of add new interface with specific \u0027network_id\u0027 by"},{"line_number":29,"context_line":"`multinic` API and `os-attach-interface` as below::"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    To add new interface with `multinic` API"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_aa14a64c","line":28,"range":{"start_line":27,"start_character":43,"end_line":28,"end_character":15},"in_reply_to":"fa6399be_03182674","updated":"2016-10-15 03:02:51.000000000","message":"yea, let fix it.","commit_id":"b18227e35984270378a00e3ecf580a5798b8d1ff"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8e6035c7fdc2070fc7ec8ee33e2ee50b433d4ee2","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Although they have similar behaviour, but they are using different code"},{"line_number":38,"context_line":"path. The `multinic` API uses `add_fixed_ip_to_instance`, the"},{"line_number":39,"context_line":"`os-attach-interfaces` API uses `allocate_port_for_instance`. This is hard to"},{"line_number":40,"context_line":"maintenance two interfaces with similar behaviour also. So there isn\u0027t any"},{"line_number":41,"context_line":"reason keep this duplicated API at here."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"The `floatingip actions` API is used to associate floating ip with the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_83a7d609","line":40,"range":{"start_line":40,"start_character":27,"end_line":40,"end_character":55},"updated":"2016-10-14 19:37:06.000000000","message":"Again, I don\u0027t think they are the same, and really we should decouple the multinic API from the floating IP actions in this spec since it\u0027s not trivial.","commit_id":"b18227e35984270378a00e3ecf580a5798b8d1ff"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eb25c3817867a394f59296fa6b8c0c353b8eeb8b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Although they have similar behaviour, but they are using different code"},{"line_number":38,"context_line":"path. The `multinic` API uses `add_fixed_ip_to_instance`, the"},{"line_number":39,"context_line":"`os-attach-interfaces` API uses `allocate_port_for_instance`. This is hard to"},{"line_number":40,"context_line":"maintenance two interfaces with similar behaviour also. So there isn\u0027t any"},{"line_number":41,"context_line":"reason keep this duplicated API at here."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"The `floatingip actions` API is used to associate floating ip with the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_8337d64b","line":40,"range":{"start_line":40,"start_character":27,"end_line":40,"end_character":55},"in_reply_to":"fa6399be_03c3c657","updated":"2016-10-14 19:44:53.000000000","message":"Also, unless I\u0027m totally missing something, if you call os-attach-interface (or create server) with a network + fixed IP, I don\u0027t think the fixed IP is used anywhere to associate with the port that is created:\n\nhttps://review.openstack.org/#/c/386755/","commit_id":"b18227e35984270378a00e3ecf580a5798b8d1ff"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4c1469607a75e42c138c282de48714f481b4d462","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Although they have similar behaviour, but they are using different code"},{"line_number":38,"context_line":"path. The `multinic` API uses `add_fixed_ip_to_instance`, the"},{"line_number":39,"context_line":"`os-attach-interfaces` API uses `allocate_port_for_instance`. This is hard to"},{"line_number":40,"context_line":"maintenance two interfaces with similar behaviour also. So there isn\u0027t any"},{"line_number":41,"context_line":"reason keep this duplicated API at here."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"The `floatingip actions` API is used to associate floating ip with the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_9d0bae23","line":40,"range":{"start_line":40,"start_character":27,"end_line":40,"end_character":55},"in_reply_to":"fa6399be_8337d64b","updated":"2016-10-15 03:02:51.000000000","message":"Let me separate the spec. Yes, os-attach-interface won\u0027t do the same thing. os-attach-interface always add new interface. os-multinic just add new fixed_ip to existed interface.","commit_id":"b18227e35984270378a00e3ecf580a5798b8d1ff"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e27f98026329cc107a8599a27e2166a9d7155c5b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Although they have similar behaviour, but they are using different code"},{"line_number":38,"context_line":"path. The `multinic` API uses `add_fixed_ip_to_instance`, the"},{"line_number":39,"context_line":"`os-attach-interfaces` API uses `allocate_port_for_instance`. This is hard to"},{"line_number":40,"context_line":"maintenance two interfaces with similar behaviour also. So there isn\u0027t any"},{"line_number":41,"context_line":"reason keep this duplicated API at here."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"The `floatingip actions` API is used to associate floating ip with the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_03c3c657","line":40,"range":{"start_line":40,"start_character":27,"end_line":40,"end_character":55},"in_reply_to":"fa6399be_83a7d609","updated":"2016-10-14 19:38:41.000000000","message":"Unless, the difference is that with multinic and add_fixed_ip_to_instance, with nova-network a fixed IP from the pool is added to the instance, and with neutron we create a port which is going to have a fixed IP from the subnet it\u0027s on and then that port is associated to the instance, so the end result is the same?","commit_id":"b18227e35984270378a00e3ecf580a5798b8d1ff"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8e6035c7fdc2070fc7ec8ee33e2ee50b433d4ee2","unresolved":false,"context_lines":[{"line_number":60,"context_line":"instance\u0027s floatingip info from the `addresses` attribute of"},{"line_number":61,"context_line":"`GET /servers/{uuid}` and `GET /servers/{uuid}/ips` APIs. Those instance"},{"line_number":62,"context_line":"floatingip info is read from the instance network cache. If user associate"},{"line_number":63,"context_line":"floating to the instance\u0027s interface with Neutron API directly, Neutron will"},{"line_number":64,"context_line":"send `network-changed` event to the Nova, then Nova will update specific"},{"line_number":65,"context_line":"instance\u0027s network info cache. So there won\u0027t have stale floatingip info in the"},{"line_number":66,"context_line":"Nova."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Use Cases"},{"line_number":69,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_c3946e8c","line":66,"range":{"start_line":63,"start_character":64,"end_line":66,"end_character":5},"updated":"2016-10-14 19:37:06.000000000","message":"Except there is a bug, so that would need to be fixed as a prerequisite to this, and I think we\u0027d need a Tempest test to show it too. Obviously any test for this would need to loop until the floating IP shows up in the server addresses, or timeout if the event is never sent or processed.","commit_id":"b18227e35984270378a00e3ecf580a5798b8d1ff"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4c1469607a75e42c138c282de48714f481b4d462","unresolved":false,"context_lines":[{"line_number":60,"context_line":"instance\u0027s floatingip info from the `addresses` attribute of"},{"line_number":61,"context_line":"`GET /servers/{uuid}` and `GET /servers/{uuid}/ips` APIs. Those instance"},{"line_number":62,"context_line":"floatingip info is read from the instance network cache. If user associate"},{"line_number":63,"context_line":"floating to the instance\u0027s interface with Neutron API directly, Neutron will"},{"line_number":64,"context_line":"send `network-changed` event to the Nova, then Nova will update specific"},{"line_number":65,"context_line":"instance\u0027s network info cache. So there won\u0027t have stale floatingip info in the"},{"line_number":66,"context_line":"Nova."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Use Cases"},{"line_number":69,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_bd16b249","line":66,"range":{"start_line":63,"start_character":64,"end_line":66,"end_character":5},"in_reply_to":"fa6399be_c3946e8c","updated":"2016-10-15 03:02:51.000000000","message":"Done","commit_id":"b18227e35984270378a00e3ecf580a5798b8d1ff"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8e6035c7fdc2070fc7ec8ee33e2ee50b433d4ee2","unresolved":false,"context_lines":[{"line_number":157,"context_line":"There will be in tree functional testing that these APIs do the right thing"},{"line_number":158,"context_line":"after this microversion and return 404s."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"For Tempest, the test_associate_disassociate_floating_ip and"},{"line_number":161,"context_line":"test_associate_already_associated_floating_ip will need to be capped at the"},{"line_number":162,"context_line":"microversion. There are `ongoing discussions`_ on how to handle this"},{"line_number":163,"context_line":"in the openstack-dev mailing list."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_c3db8e7a","line":160,"updated":"2016-10-14 19:37:06.000000000","message":"As noted above, I think we need a new test (today actually) where the floating IP is associated to the port (and thus the server) via neutron directly, and nova would refresh the cache via the network-changed event indirectly. We need to make sure that is solid before we can deprecate the compute API.","commit_id":"b18227e35984270378a00e3ecf580a5798b8d1ff"}],"specs/pike/approved/deprecate-multinic-proxy-api.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"baf0600feec9bc26ee883ba7107b0e46b747ea1a","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The neutron implementation of Nova `multinic` API is allocating one new"},{"line_number":21,"context_line":"fixed IP address to the instance\u0027s existed interface in the specific network."},{"line_number":22,"context_line":"The user only can input the network id which is used by existed interface,"},{"line_number":23,"context_line":"then the implementation is going to allocate one fixed IP address from existed"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_68172547","line":20,"updated":"2017-04-04 20:00:34.000000000","message":"To be clear, do you mean the nova.network.neutronv2.api implementation of the Nova multinic API? Because I was reading into this for awhile thinking you were describing how neutron\u0027s API itself was handling this, not the nova implementation of it. We need to clarify this somehow.","commit_id":"e022f1bf7cc62f319d666bc33835052c80740e82"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f7670a71d94f23652fe20881e5a72aebc900ba13","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The neutron implementation of Nova `multinic` API is allocating one new"},{"line_number":21,"context_line":"fixed IP address to the instance\u0027s existed interface in the specific network."},{"line_number":22,"context_line":"The user only can input the network id which is used by existed interface,"},{"line_number":23,"context_line":"then the implementation is going to allocate one fixed IP address from existed"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bff0334d_3664de49","line":20,"in_reply_to":"dfeb2761_68172547","updated":"2017-04-10 12:14:33.000000000","message":"yes, I talk about the nova.network.neutronv2.api implementation of the Nova multinic API","commit_id":"e022f1bf7cc62f319d666bc33835052c80740e82"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"baf0600feec9bc26ee883ba7107b0e46b747ea1a","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    # To list all subnets in the specific network"},{"line_number":33,"context_line":"    neutron subnet-list --network-id NETWORK_ID"},{"line_number":34,"context_line":"    # Update the port includes the existed subnet and fixedIP and the new subnet"},{"line_number":35,"context_line":"    neutron port-update --fixed-ip subnet-id\u003dEXISTED_SUBNET_ID,ip_address\u003dEXISTED_IP_ADDRESS --fixed-ip subnet-id\u003dNEW_SUBNET_ID"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"In the API response of `GET /servers/{uuid}` and `GET /servers/{uuid}/ips`,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_e859f534","line":34,"updated":"2017-04-04 20:00:34.000000000","message":"I\u0027m a bit unclear on what this is doing. Is this updating the neutron port to move EXISTED_IP_ADDRESS from EXISTED_SUBNET_ID to NEW_SUBNET_ID?","commit_id":"e022f1bf7cc62f319d666bc33835052c80740e82"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f8758c8b366e062850370f78ee67f869f2f92c24","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    # To list all subnets in the specific network"},{"line_number":33,"context_line":"    neutron subnet-list --network-id NETWORK_ID"},{"line_number":34,"context_line":"    # Update the port includes the existed subnet and fixedIP and the new subnet"},{"line_number":35,"context_line":"    neutron port-update --fixed-ip subnet-id\u003dEXISTED_SUBNET_ID,ip_address\u003dEXISTED_IP_ADDRESS --fixed-ip subnet-id\u003dNEW_SUBNET_ID"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"In the API response of `GET /servers/{uuid}` and `GET /servers/{uuid}/ips`,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bff0334d_f60e6139","line":34,"in_reply_to":"bff0334d_5602c20c","updated":"2017-04-10 21:13:59.000000000","message":"Oh I see, it\u0027s all or none then for the neutronclient command, i.e. it doesn\u0027t append the new fixed IP, so if you don\u0027t include the existing fixed IPs the port-update will remove them? That\u0027s no fun.","commit_id":"e022f1bf7cc62f319d666bc33835052c80740e82"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"128fb8c4800ff59c09911e6d43c86c889a76e1f8","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    # To list all subnets in the specific network"},{"line_number":33,"context_line":"    neutron subnet-list --network-id NETWORK_ID"},{"line_number":34,"context_line":"    # Update the port includes the existed subnet and fixedIP and the new subnet"},{"line_number":35,"context_line":"    neutron port-update --fixed-ip subnet-id\u003dEXISTED_SUBNET_ID,ip_address\u003dEXISTED_IP_ADDRESS --fixed-ip subnet-id\u003dNEW_SUBNET_ID"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"In the API response of `GET /servers/{uuid}` and `GET /servers/{uuid}/ips`,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bff0334d_d8cee658","line":34,"in_reply_to":"bff0334d_f60e6139","updated":"2017-04-11 01:54:37.000000000","message":"yes.","commit_id":"e022f1bf7cc62f319d666bc33835052c80740e82"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f7670a71d94f23652fe20881e5a72aebc900ba13","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    # To list all subnets in the specific network"},{"line_number":33,"context_line":"    neutron subnet-list --network-id NETWORK_ID"},{"line_number":34,"context_line":"    # Update the port includes the existed subnet and fixedIP and the new subnet"},{"line_number":35,"context_line":"    neutron port-update --fixed-ip subnet-id\u003dEXISTED_SUBNET_ID,ip_address\u003dEXISTED_IP_ADDRESS --fixed-ip subnet-id\u003dNEW_SUBNET_ID"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"In the API response of `GET /servers/{uuid}` and `GET /servers/{uuid}/ips`,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bff0334d_5602c20c","line":34,"in_reply_to":"dfeb2761_e859f534","updated":"2017-04-10 12:14:33.000000000","message":"The neutron client didn\u0027t append new fixed IP when update. So in this update cmd, it needs to include existed fixed IP and adding new fixed IP.\n\n\"--fixed-ip subnet-id\u003dEXISTED_SUBNET_ID,ip_address\u003dEXISTED_IP_ADDRESS\" for existed fixed ip.\n\n\"--fixed-ip subnet-id\u003dEXISTED_SUBNET_ID,ip_address\u003dEXISTED_IP_ADDRESS --fixed-ip subnet-id\u003dNEW_SUBNET_ID\" for adding a new fixed ip from a new subnet.\n\nA more detail example is:\n\nthe network has two subnets\nsubnetA, cidr: 10.0.0.0/24\nsubnetB, cidr: 11.0.0.0/24\n\n\nThe port created with fixed IP from subnetA on network. The port has fixed IP 10.0.0.3.\n\nThen add another fixed IP for the port from subnetB. One more fixed IP 11.0.0.3 added for the port.","commit_id":"e022f1bf7cc62f319d666bc33835052c80740e82"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"baf0600feec9bc26ee883ba7107b0e46b747ea1a","unresolved":false,"context_lines":[{"line_number":42,"context_line":"Use Cases"},{"line_number":43,"context_line":"---------"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* The end user add multinic FixedIP to the existed interface through the"},{"line_number":46,"context_line":"  Neutron API directly."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_88c70965","line":45,"updated":"2017-04-04 20:00:34.000000000","message":"This isn\u0027t really a use case. I think we\u0027re looking for something like, \"As a user, I want to add multiple fixed IPs to my server instance and do it in a consistent and predictable way.\" and/or maybe \"As a deployer, I don\u0027t want to support broken compute APIs that are poor proxies to the networking service.\"","commit_id":"e022f1bf7cc62f319d666bc33835052c80740e82"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f7670a71d94f23652fe20881e5a72aebc900ba13","unresolved":false,"context_lines":[{"line_number":42,"context_line":"Use Cases"},{"line_number":43,"context_line":"---------"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* The end user add multinic FixedIP to the existed interface through the"},{"line_number":46,"context_line":"  Neutron API directly."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bff0334d_71e270a2","line":45,"in_reply_to":"dfeb2761_88c70965","updated":"2017-04-10 12:14:33.000000000","message":"Done","commit_id":"e022f1bf7cc62f319d666bc33835052c80740e82"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"baf0600feec9bc26ee883ba7107b0e46b747ea1a","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Other end user impact"},{"line_number":81,"context_line":"---------------------"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"When user request the version \u003e\u003d the new microversion, the CLI will fallback to"},{"line_number":84,"context_line":"old microversion automatically. The python API binding will be cap to the new"},{"line_number":85,"context_line":"microversion, return fault explicitly when user request \u003e\u003d new microversion."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_080c1992","line":84,"range":{"start_line":83,"start_character":0,"end_line":84,"end_character":31},"updated":"2017-04-04 20:00:34.000000000","message":"This is copied from the other deprecated proxy API spec correct? It\u0027s unfortunate that we didn\u0027t deprecate \u0027nova add-fixed-ip\u0027 and \u0027nova remove-fixed-ip\u0027 earlier in novaclient because the other nova-network and proxy things are gone as of this change (except for \"nova virtual-interface-list\").\n\nhttps://review.openstack.org/#/c/447728/\n\nIn this change we removed the deprecated proxy handler:\n\nhttps://review.openstack.org/#/c/437145/2/novaclient/v2/shell.py@a76\n\nSo I\u0027m a bit torn between just capping the novaclient CLI and API for add/remove fixed IP to the new microversion, or providing some time to deprecate the CLI and API but for the CLI to fall back to a microversion that works for a release and then remove it. For the sake of making this easy, I\u0027d be OK with just not doing the microversion fallback dance in the CLI and cap it at the new microversion, and deprecate the CLI at the same time.","commit_id":"e022f1bf7cc62f319d666bc33835052c80740e82"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"128fb8c4800ff59c09911e6d43c86c889a76e1f8","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Other end user impact"},{"line_number":81,"context_line":"---------------------"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"When user request the version \u003e\u003d the new microversion, the CLI will fallback to"},{"line_number":84,"context_line":"old microversion automatically. The python API binding will be cap to the new"},{"line_number":85,"context_line":"microversion, return fault explicitly when user request \u003e\u003d new microversion."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bff0334d_d8c94659","line":84,"range":{"start_line":83,"start_character":0,"end_line":84,"end_character":31},"in_reply_to":"bff0334d_09a76a0d","updated":"2017-04-11 01:54:37.000000000","message":"Ok, I see now. If the user still use nova-network, they should use old version python-novalcient, I think?","commit_id":"e022f1bf7cc62f319d666bc33835052c80740e82"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f8758c8b366e062850370f78ee67f869f2f92c24","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Other end user impact"},{"line_number":81,"context_line":"---------------------"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"When user request the version \u003e\u003d the new microversion, the CLI will fallback to"},{"line_number":84,"context_line":"old microversion automatically. The python API binding will be cap to the new"},{"line_number":85,"context_line":"microversion, return fault explicitly when user request \u003e\u003d new microversion."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bff0334d_09a76a0d","line":84,"range":{"start_line":83,"start_character":0,"end_line":84,"end_character":31},"in_reply_to":"bff0334d_bc968f4b","updated":"2017-04-10 21:13:59.000000000","message":"Because there is an alternative to the image proxy CLIs/APIs in novaclient, that is, use glanceclient.\n\nThere isn\u0027t an alternative for the network APIs if you are using nova-network (neutronclient won\u0027t work for those). That\u0027s why we provided the fallback to soften the impact of deprecating the network CLIs. Now that we\u0027re past that big change, I don\u0027t think we need a fallback for deprecating multinic in novaclient.","commit_id":"e022f1bf7cc62f319d666bc33835052c80740e82"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f7670a71d94f23652fe20881e5a72aebc900ba13","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Other end user impact"},{"line_number":81,"context_line":"---------------------"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"When user request the version \u003e\u003d the new microversion, the CLI will fallback to"},{"line_number":84,"context_line":"old microversion automatically. The python API binding will be cap to the new"},{"line_number":85,"context_line":"microversion, return fault explicitly when user request \u003e\u003d new microversion."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bff0334d_bc968f4b","line":84,"range":{"start_line":83,"start_character":0,"end_line":84,"end_character":31},"in_reply_to":"dfeb2761_080c1992","updated":"2017-04-10 12:14:33.000000000","message":"I\u0027m little confused on why we have some CLIs support fallback and some CLIs not(Network CLI will fallback, but image CLI won\u0027t fallback). Why have we a different strategy in the initially?","commit_id":"e022f1bf7cc62f319d666bc33835052c80740e82"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"baf0600feec9bc26ee883ba7107b0e46b747ea1a","unresolved":false,"context_lines":[{"line_number":114,"context_line":"The following are all done under a single new microversion:"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"* Deprecate the `multinic` API."},{"line_number":117,"context_line":"* Enable the fallback of the `add-fixed-ip` CLI."},{"line_number":118,"context_line":"* Cap the python API binding for `multinic` API."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_e88575d0","line":117,"updated":"2017-04-04 20:00:34.000000000","message":"I think we should just skip this for this go around as we\u0027re already removing the other network proxy stuff from novaclient in 8.0. I think we should just cap the CLI and deprecate it, to be removed in Queens.","commit_id":"e022f1bf7cc62f319d666bc33835052c80740e82"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"baf0600feec9bc26ee883ba7107b0e46b747ea1a","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"* Deprecate the `multinic` API."},{"line_number":117,"context_line":"* Enable the fallback of the `add-fixed-ip` CLI."},{"line_number":118,"context_line":"* Cap the python API binding for `multinic` API."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Dependencies"},{"line_number":121,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_6871650c","line":118,"updated":"2017-04-04 20:00:34.000000000","message":"Cap and deprecate.","commit_id":"e022f1bf7cc62f319d666bc33835052c80740e82"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"baf0600feec9bc26ee883ba7107b0e46b747ea1a","unresolved":false,"context_lines":[{"line_number":129,"context_line":"after this microversion and return 404s."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"For Tempest, the test_add_remove_fixed_ip will need to be capped at the"},{"line_number":132,"context_line":"microversion. There are `ongoing discussions`_ on how to handle this"},{"line_number":133,"context_line":"in the openstack-dev mailing list."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Documentation Impact"},{"line_number":136,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_28cebd2d","line":133,"range":{"start_line":132,"start_character":14,"end_line":133,"end_character":34},"updated":"2017-04-04 20:00:34.000000000","message":"This was copied from the old spec and I think we can just remove it.","commit_id":"e022f1bf7cc62f319d666bc33835052c80740e82"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"baf0600feec9bc26ee883ba7107b0e46b747ea1a","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"   * - Release Name"},{"line_number":155,"context_line":"     - Description"},{"line_number":156,"context_line":"   * - Ocata"},{"line_number":157,"context_line":"     - Introduced"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfeb2761_e8d335d4","line":156,"range":{"start_line":156,"start_character":7,"end_line":156,"end_character":12},"updated":"2017-04-04 20:00:34.000000000","message":"Pike","commit_id":"e022f1bf7cc62f319d666bc33835052c80740e82"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"921c97c34a9b39d645e9a4fb06fb6764c161c071","unresolved":false,"context_lines":[{"line_number":117,"context_line":"The following are all done under a single new microversion:"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"* Deprecate the `multinic` API."},{"line_number":120,"context_line":"* Cap the `add-fixed-ip` and `remove-fixed-ip` CLI."},{"line_number":121,"context_line":"* Cap the python API binding for `multinic` API."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Dependencies"},{"line_number":124,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bff0334d_a1064e1b","line":121,"range":{"start_line":120,"start_character":2,"end_line":121,"end_character":48},"updated":"2017-04-11 03:18:31.000000000","message":"nit: I think we should also deprecate these in novaclient when we cap them.","commit_id":"99489598010d4d780b5cf20f952b57a2147f2f81"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"eccc319f31a1c9a17aaf3ceebeee33c7d7dc935f","unresolved":false,"context_lines":[{"line_number":117,"context_line":"The following are all done under a single new microversion:"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"* Deprecate the `multinic` API."},{"line_number":120,"context_line":"* Cap the `add-fixed-ip` and `remove-fixed-ip` CLI."},{"line_number":121,"context_line":"* Cap the python API binding for `multinic` API."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Dependencies"},{"line_number":124,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bff0334d_27192e21","line":121,"range":{"start_line":120,"start_character":2,"end_line":121,"end_character":48},"in_reply_to":"bff0334d_a1064e1b","updated":"2017-04-11 05:49:32.000000000","message":"Done","commit_id":"99489598010d4d780b5cf20f952b57a2147f2f81"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"921c97c34a9b39d645e9a4fb06fb6764c161c071","unresolved":false,"context_lines":[{"line_number":132,"context_line":"after this microversion and return 404s."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"For Tempest, the test_add_remove_fixed_ip will need to be capped at the"},{"line_number":135,"context_line":"microversion. There are `ongoing discussions`_ on how to handle this"},{"line_number":136,"context_line":"in the openstack-dev mailing list."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Documentation Impact"},{"line_number":139,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bff0334d_4111c251","line":136,"range":{"start_line":135,"start_character":14,"end_line":136,"end_character":34},"updated":"2017-04-11 03:18:31.000000000","message":"I think we could remove this sentence, it\u0027s copied from the old spec. https://review.openstack.org/444727 is relevant for that now though.","commit_id":"99489598010d4d780b5cf20f952b57a2147f2f81"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"eccc319f31a1c9a17aaf3ceebeee33c7d7dc935f","unresolved":false,"context_lines":[{"line_number":132,"context_line":"after this microversion and return 404s."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"For Tempest, the test_add_remove_fixed_ip will need to be capped at the"},{"line_number":135,"context_line":"microversion. There are `ongoing discussions`_ on how to handle this"},{"line_number":136,"context_line":"in the openstack-dev mailing list."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Documentation Impact"},{"line_number":139,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bff0334d_4720b248","line":136,"range":{"start_line":135,"start_character":14,"end_line":136,"end_character":34},"in_reply_to":"bff0334d_4111c251","updated":"2017-04-11 05:49:32.000000000","message":"Done","commit_id":"99489598010d4d780b5cf20f952b57a2147f2f81"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"921c97c34a9b39d645e9a4fb06fb6764c161c071","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"   * - Release Name"},{"line_number":158,"context_line":"     - Description"},{"line_number":159,"context_line":"   * - Ocata"},{"line_number":160,"context_line":"     - Introduced"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bff0334d_211a3e6e","line":159,"range":{"start_line":159,"start_character":7,"end_line":159,"end_character":12},"updated":"2017-04-11 03:18:31.000000000","message":"Pike.","commit_id":"99489598010d4d780b5cf20f952b57a2147f2f81"}]}
