> On Feb 12, 2016, at 12:03 PM, Matt Riedemann <mrie...@linux.vnet.ibm.com> > wrote: > > > > On 2/12/2016 12:45 PM, John Garbutt wrote: >> On 12 February 2016 at 18:17, Andrew Laski <and...@lascii.com> wrote: >>> >>> >>> On Fri, Feb 12, 2016, at 12:15 PM, Matt Riedemann wrote: >>>> 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). >>>> >>>> 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. >>>> >>>> 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. >>>> >>>> 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). >>>> >>>> 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. >>>> >>>> So I guess the question now is how do we handle that behavior change in >>>> the nova API? >>>> >>>> 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. >>>> >>> >>> I think a flag like this is the right approach. If it's currently valid >>> to boot an instance without a network than there needs to be something >>> to distinguish a request that wants a network created vs. a request that >>> doesn't want a network. >>> >>> This is still hugely useful if all that's required from a user is to >>> indicate that they would like a network, they still don't need to >>> understand/provide details of the network. >> >> I was thinking a sort of opposite. Would this work? >> >> We add a new micro-version that does this: >> * nothing specified: do the best we can to get a port created >> (get-me-a-network, etc,), or fail if not possible >> * --no-nics option (or similar) that says "please don't give me any nics" >> >> This means folks that don't want a network, reliably have a way to do >> that. For everyone else, we do the same thing when using either >> neutron or nova-network VLAN manager. >> >> Thanks, >> johnthetubaguy >> >> PS >> I think we should focus on the horizon experience, CLI experience, and >> API experience separately, for a moment, to make sure each of those >> cases actually works out OK. >> >>>> 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). >>>> >>>> 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. >>>> >>>> [1] https://blueprints.launchpad.net/neutron/+spec/get-me-a-network >>>> [2] >>>> https://github.com/openstack/nova/blob/30ba0c5eb19a9c9628957ac8e617ae78c0c1fa84/nova/network/neutronv2/api.py#L594-L595 >>>> [3] >>>> https://github.com/openstack/nova/blob/30ba0c5eb19a9c9628957ac8e617ae78c0c1fa84/nova/network/neutronv2/api.py#L1107 >>>> >>>> -- >>>> >>>> Thanks, >>>> >>>> Matt Riedemann >>>> >>>> >>>> __________________________________________________________________________ >>>> OpenStack Development Mailing List (not for usage questions) >>>> Unsubscribe: >>>> openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>> >>> __________________________________________________________________________ >>> OpenStack Development Mailing List (not for usage questions) >>> Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >> >> __________________________________________________________________________ >> OpenStack Development Mailing List (not for usage questions) >> Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >> > > I think we're basically looking at the same use case. And as Kevin noted I > was thinking an option on the --nic part of the request, like auto-allocate.
I thought one of the original notions behind this was to make ‘nova boot’ as simple as in the nova-net case, which would imply not needing to use —nic at all. I personally like the idea of the flag being for the no network case. doug > > My thinking was with the microversion, that defaults to True and you have to > opt-in to the old behavior (specify auto-allocate=False) of nova being OK > with not providing any network for the instance. The flag that goes down > through the compute API and neutronv2 API code would default to False for > backward compat, we'd just default the option to True in the REST API if not > explicitly provided. > > -- > > Thanks, > > Matt Riedemann > > > __________________________________________________________________________ > OpenStack Development Mailing List (not for usage questions) > Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev __________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev