<div dir="ltr">May I ask can we put those thing in to the CLI? I guess there should have similar discussion and I missed. As we didn't want to provide more neutron API proxy, this works sounds like adding more proxy. And API is more simple and more flexible, this make the API have more complex behaviour. Just like evacuate API, it just does one thing, for evacuate the all the instances on the host, that should be CLI thing.<div><br></div><div>Thanks</div><div>Alex</div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-02-13 1:15 GMT+08:00 Matt Riedemann <span dir="ltr"><<a href="mailto:mriedem@linux.vnet.ibm.com" target="_blank">mriedem@linux.vnet.ibm.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Forgive me for thinking out loud, but I'm trying to sort out how nova would use a microversion in the nova API for the get-me-a-network feature recently added to neutron [1] and planned to be leveraged in nova (there isn't a spec yet for nova, I'm trying to sort this out for a draft).<br>
<br>
Originally I was thinking that a network is required for nova boot, so we'd simply check for a microversion and allow not specifying a network, easy peasy.<br>
<br>
Turns out you can boot an instance in nova (with neutron as the network backend) without a network. All you get is a measly debug log message in the compute logs [2]. That's kind of useless though and seems silly.<br>
<br>
I haven't tested this out yet to confirm, but I suspect that if you create a nova instance w/o a network, you can latter try to attach a network using the os-attach-interfaces API as long as you either provide a network ID *or* there is a public shared network or the tenant has a network at that point (nova looks those up if a specific network ID isn't provided).<br>
<br>
The high-level plan for get-me-a-network in nova was simply going to be if the user tries to boot an instance and doesn't provide a network, and there isn't a tenant network or public shared network to default to, then nova would call neutron's new auto-allocated-topology API to get a network. This, however, is a behavior change.<br>
<br>
So I guess the question now is how do we handle that behavior change in the nova API?<br>
<br>
We could add an auto-create-net boolean to the boot server request which would only be available in a microversion, then we could check that boolean in the compute API when we're doing network validation.<br>
<br>
Today if you don't specify a network and don't have a network available, then the validation in the API is basically just quota checking that you can get at least one port in your tenant [3]. With a flag on a microversion, we could also validate some other things about auto-creating a network (if we know that's going to be the case once we hit the compute).<br>
<br>
Anyway, this is mostly me getting thoughts out of my head before the weekend so I don't forget it and am looking for other ideas here or things I might be missing.<br>
<br>
[1] <a href="https://blueprints.launchpad.net/neutron/+spec/get-me-a-network" rel="noreferrer" target="_blank">https://blueprints.launchpad.net/neutron/+spec/get-me-a-network</a><br>
[2] <a href="https://github.com/openstack/nova/blob/30ba0c5eb19a9c9628957ac8e617ae78c0c1fa84/nova/network/neutronv2/api.py#L594-L595" rel="noreferrer" target="_blank">https://github.com/openstack/nova/blob/30ba0c5eb19a9c9628957ac8e617ae78c0c1fa84/nova/network/neutronv2/api.py#L594-L595</a><br>
[3] <a href="https://github.com/openstack/nova/blob/30ba0c5eb19a9c9628957ac8e617ae78c0c1fa84/nova/network/neutronv2/api.py#L1107" rel="noreferrer" target="_blank">https://github.com/openstack/nova/blob/30ba0c5eb19a9c9628957ac8e617ae78c0c1fa84/nova/network/neutronv2/api.py#L1107</a><span class="HOEnZb"><font color="#888888"><br>
<br>
-- <br>
<br>
Thanks,<br>
<br>
Matt Riedemann<br>
<br>
<br>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</font></span></blockquote></div><br></div>