On Jul 19, 2013, at 6:01 PM, Aaron Rosen <aro...@nicira.com> wrote:
> 
> On Fri, Jul 19, 2013 at 3:37 PM, Ian Wells <ijw.ubu...@cack.org.uk> wrote:
> > [arosen] - sure, in this case though then we'll have to add even more
> > queries between nova-compute and quantum as nova-compute will need to query
> > quantum for ports matching the device_id to see if the port was already
> > created and if not try to create them.
> 
> The cleanup job doesn't look like a job for nova-compute regardless of the 
> rest.
> 
> > Moving the create may for other reasons be a good idea (because compute
> > would *always* deal with ports and *never* with networks - a simpler API) -
> > but it's nothing to do with solving this problem.
> >
> > [arosen] - It does solve this issue because it moves the quantum port-create
> > calls outside of the retry schedule logic on that compute node. Therefore if
> > the port fails to create the instance goes to error state.  Moving networks
> > out of the nova-api will also solve this issue for us as the client then
> > won't rely on nova anymore to create the port. I'm wondering if creating an
> > additional network_api_class like nova.network.quantumv2.api.NoComputeAPI is
> > the way to prove this out. Most of the code in there would inherit from
> > nova.network.quantumv2.api.API .
> 
> OK, so if we were to say that:
> 
> - nova-api creates the port with an expiry timestamp to catch orphaned
> autocreated ports
> 
> I don't think we want to put a timestamp there. We can figure out which ports 
> are orphaned by checking if a port's device_id in quantum is still an active 
> instance_id in nova (which currently isn't true but would be if the 
> port-create is moved out of compute to api) and that device_owner is 
> nova:compute. 
>  
> - nova-compute always uses port-update (or, better still, have a
> distinct call that for now works like port-update but clearly
> represents an attach or detach and not a user-initiated update,
> improving the plugin division of labour, but that can be a separate
> proposal) and *never* creates a port; attaching to an
> apparently-attached port attached to the same instance should ensure
> that a previous attachment is destroyed, which should cover the
> multiple-schedule lost-reply case
> 
> agree 
> - nova-compute is always talked to in terms of ports, and never in
> terms of networks (a big improvement imo)
> 
> agree!
> 
> - nova-compute attempts to remove autocreated ports on detach 
> - a cleanup job in nova-api (or nova-conductor?) cleans up expired
> autocreated ports with no attachment or a broken attachment (which
> would catch failed detachments as well as failed schedules)  
> 
> how does that work for people?  It seems to improve the internal
> interface and the transactionality, it means that there's not the
> slightly nasty (and even faintly race-prone) create-update logic in
> nova-compute, it even simplifies the nova-compute interface - though
> we would need to consider how an upgrade path would work, there; newer
> API with older compute should work fine, the reverse not so much.
> 
> I agree, ensuring backwards compatibility if the compute nodes are updated 
> and not the api nodes would be slightly tricky. I'd hope we could get away 
> with releasing noting that you need to update the api nodes first. 
>  

This all sounds good to me as well. And release noting the update procedure 
seems reasonable for upgrades as well.
_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to