[openstack-dev] What's a dependency (was Re: [all][tc] governance changes for "big tent"...) model
Chris Friesen
chris.friesen at windriver.com
Fri Oct 3 21:13:06 UTC 2014
On 10/03/2014 02:33 PM, Eoghan Glynn wrote:
>
>
>> So a bit of background here. This began from thinking about functional
>> dependencies, and pondering whether a map of the dependency graph of
>> our projects could inform our gating structure, specifically to
>> encourage (or dare I say, actually force) all of us (the project
>> teams) to become more cognizant of the API contracts we are making
>> with each other, and the pain it causes when we break those contracts.
>>
>> Let's not extend this exercise to a gigantic
>> everything-needs-everything-to-do-everything picture, which is where
>> it's heading now. Sure, telemetry is important for operators, and in
>> no way am I saying anything else when I say: for Nova to fulfill its
>> primary goal, telemetry is not necessary. It is optional. Desired, but
>> optional.
>
> I don't follow the optional-but-not-necessary argument here, or
> where you're applying the cut-off for the graph not turning into
> a gigantic picture.
>
> There were a bunch of relationships in the original graph that
> are not strictly necessary for nova to fulfill it's primary goal,
> but are desired and existing functional dependencies in any case.
>
> So, are we trying to capture all dependencies here, or to apply
> some value-judgement and selectively capture just the good
> dependencies, for some definition of good?
I would suggest that we look at things from the point of view of what
the component needs in order to accomplish its goals.
As an example, for nova to do anything useful it needs
neutron/keystone/glance.
If the end-user wants persistent block storage, then nova needs cinder.
If the end-user wants object storage, then nova needs swift.
For heat to be really useful it needs both ceilometer and nova.
On the other hand, nova doesn't *need*
ceilometer/heat/trove/ironic/zaqar) for anything.
In terms of integration testing, this means that a change within
ceilometer/heat/trove/ironic/zaqar/etc. that breaks them should not
block submissions to nova. On the other hand a change within neutron
that breaks it probably will block submissions to nova.
On the flip side, it may be beneficial for
ceilometer/heat/trove/ironic/zaqar/etc. to develop against a stable
snapshot of nova/neutron/keystone/glance so that they're isolated
against changes that break them. (Though they may want to run
integration tests against the most recent versions to catch API breakage
early.)
Chris
More information about the OpenStack-dev
mailing list