[openstack-dev] [openstack-tc] Splitting the Baremetal driver out of Nova
Russell Bryant
rbryant at redhat.com
Fri Apr 26 15:56:53 UTC 2013
On 04/26/2013 10:26 AM, Monty Taylor wrote:
>
>
> On 04/26/2013 09:56 AM, Russell Bryant wrote:
>> On 04/26/2013 06:29 AM, Mark McLoughlin wrote:
>>> Hey
>>>
>>> On Thu, 2013-04-25 at 11:57 -0700, Devananda van der Veen wrote:
>>>> In the Nova "Baremetal Next Steps" design session last Thursday, I proposed
>>>> that we split the baremetal driver out into its own top-level project -
>>>> this was met with support from everyone in the room. We then discussed the
>>>> project's plans and how such a split should be done. I have written up that
>>>> proposal in more detail here, and would like to bring this before the TC.
>>>>
>>>> https://wiki.openstack.org/wiki/BaremetalSplitRationale
>>>
>>> I'm all for the code being in a separate project - I think this thing
>>> could have users outside of Nova.
>>>
>>> I did work up an idea for how it could be done during Folsom
>>> development, but I actually was thinking of it just being a library:
>>>
>>> https://gist.github.com/markmc/5466295
>>>
>>> Not much detail there, but BareMetalConnection/BareMetalNode would be in
>>> the library and BareMetalDriver would be the Nova part. I hadn't figured
>>> on this being a service with its own REST API, but perhaps that does
>>> make sense.
>>
>> I'm +1 on splitting it out. I wasn't too sure about library vs. service
>> with an API because I'm not hugely familiar with this code, anyway. I
>> think Devananda did a nice job documenting the rationale, though. I
>> think this bullet from the doc helps push me toward the idea of a service:
>>
>> Operational teams often perform tasks on hardware which do not
>> apply to virtual machines (eg., discovery, HW RAID configuration,
>> firmware updates, burn-in). These could be added as Nova API
>> extensions, but again, it seems like the wrong approach. Instead,
>> a separate API could manage hardware before exposing via the Nova
>> API. For example, after being discovered, configured, updated, and
>> burned in by Ironic, it could then be enrolled with Nova and
>> provisioned as any other cloud instance (eg, via "nova boot").
>>
>> It seems that a separate API makes sense here to avoid making awkward
>> extensions to the compute API.
>>
>>> However, that does make me wonder whether we'd see desire to plug
>>> alternative baremetal provisioning technologies into that API, in the
>>> same way we see a desire for alternative backends to the Swift API.
>>
>> Would that be a problem? Actually, is that different from how it works
>> already?
>>
>> cfg.StrOpt('driver',
>> default='nova.virt.baremetal.pxe.PXE',
>> help='Baremetal driver back-end (pxe or tilera)'),
>> cfg.StrOpt('power_manager',
>> default='nova.virt.baremetal.ipmi.IPMI',
>> help='Baremetal power management method'),
>>
>>> Finally, making this a service (with a yet undefined API) rather than a
>>> library makes me think the new project should go through an incubation
>>> period, rather than bypassing incubation the way Cinder did.
>>
>> I agree here.
>>
>> I'm actually generally concerned with the fast-track approach. I do not
>> think it is the case here, but it could be abused in the future as an
>> alternative, perhaps easier method to getting a project to be
>> integrated. I have actually heard this exact strategy mentioned in
>> conversation (growing something in a project and then splitting it off,
>> because it seems as if it will be easier that way).
>
> Good point.
>
> As it pertains to incubated splits and the deprecation of the feature in
> the original project - what do we think the cutover should be? If, for
> instance, we moved forward with Ironic as an incubated project, and then
> accepted into integrated for "I" - since there had already been the
> Havana cycle with the external project and the incubated project, do we
> pull the code from nova in I? Or do we wait until J?
If there is a sufficiently documented migration path, I think pulling
baremetal out of Nova in the same release Ironic becomes integrated
would be acceptable (so, theoretically I in this case).
--
Russell Bryant
More information about the OpenStack-dev
mailing list