<div dir="ltr">Hi folks,<div><br></div><div>Recently we've been discussing with Nachi Ueno some specific use case of deployments with multiple providers for particular advanced service.</div><div><br></div><div>What If admin wants to remove certain provider from configuration file?</div>

<div>The following handling was proposed:</div><div>1) Before restarting neutron-server to apply new configuration, admin undeploys all resources that were deployed with provider being removed. That's needed to gracefully cleanup devices used by provider being removed.</div>

<div><br></div><div>2) Removal of a provider should not result in resource deletion.</div><div>E.g. user's logical resources are preserved, and they can be associated with other service providers later on.</div><div>
<br></div><div>
3) Having (1) and (2) it's obvious that after those steps are performed, users are left with pure logical resources which don't have physical representation.</div><div>I think such resources are no worse then deployed ones, e.g. could be worked with just the same way as those which have a provider associated.</div>

<div><br></div><div>The conclusion from (3) is that users themselves may want to create such resources.</div><div>The workflow would be to create resource with no provider, configure it, and then deploy at once.</div><div>

<br></div><div>And I have an API question regarding such use case.</div><div style>Currently user doesn't specify provider to create resource. For this to continue to work we introduced the notion of 'default provider'. So, If user doesn't specify provider - the default one is used.</div>
<div style>Then if we want users to be able to create unassociated resource, what kind of provider they need to pass to 'create' API call?</div><div style><br></div><div style>One important consideration that appeared while I was implementing multiple providers for lbaas is that a resource always needs to be handled by some provider, even if not associated with any. That is needed to preserve consistency of DB operations, because in current model (for lbaas at least) plugin sets object (pool, vip, etc) status to PENDING_DELETE, and then driver deletes it. </div>
<div style>If resource is unassociated with the driver, then 'Noop' driver must be used for this logic to work properly.</div><div style><br></div><div style>One of the solution to this would be to have special name for the provider to indicate 'Noop' provider. The reason for having special name is that it's better to not specify Noop in configuration as it is essential basic provider that should always be present.</div>
<div style><br></div><div style>Please share your thoughts.</div><div style><br></div><div style>Thanks,</div><div style>Eugene.</div><div style><br></div></div>