[openstack-dev] [nova][placement] scheduling with custom resouce classes
Balazs Gibizer
balazs.gibizer at ericsson.com
Wed Jul 19 10:14:17 UTC 2017
On Tue, Jul 18, 2017 at 2:39 PM, Balazs Gibizer
<balazs.gibizer at ericsson.com> wrote:
>
>
> On Mon, Jul 17, 2017 at 6:40 PM, Jay Pipes <jaypipes at gmail.com> wrote:
> > On 07/17/2017 11:31 AM, Balazs Gibizer wrote:
> > > On Thu, Jul 13, 2017 at 11:37 AM, Chris Dent
> > <cdent+os at anticdent.org>
> > > wrote:
> > >> On Thu, 13 Jul 2017, Balazs Gibizer wrote:
> > >>
> > >>>
> >
> /placement/allocation_candidates?resources=CUSTOM_MAGIC%3A512%2CMEMORY_MB%3A64%2CVCPU%3A1"
> > >>> but placement returns an empty response. Then nova scheduler
> falls
> > >>> back to legacy behavior [4] and places the instance without
> > >>> considering the custom resource request.
> > >>
> > >> As far as I can tell at least one missing piece of the puzzle
> here
> > >> is that your MAGIC provider does not have the
> > >> 'MISC_SHARES_VIA_AGGREGATE' trait. It's not enough for the
> compute
> > >> and MAGIC to be in the same aggregate, the MAGIC needs to
> announce
> > >> that its inventory is for sharing. The comments here have a bit
> > more
> > >> on that:
> > >>
> > >>
> >
> https://github.com/openstack/nova/blob/master/nova/objects/resource_provider.py#L663-L678
> > >
> > > Thanks a lot for the detailed answer. Yes, this was the missing
> > piece.
> > > However I had to add that trait both the the MAGIC provider and to
> > my
> > > compute provider to make it work. Is it intentional that the
> compute
> > > also has to have that trait?
> >
> > No. The compute node doesn't need that trait. It only needs to be
> > associated to an aggregate that is associated to the provider that
> is
> > marked with the MISC_SHARES_VIA_AGGREGATE trait.
> >
> > In other words, you need to do this:
> >
> > 1) Create the provider record for the thing that is going to share
> the
> > CUSTOM_MAGIC resources
> >
> > 2) Create an inventory record on that provider
> >
> > 3) Set the MISC_SHARES_VIA_AGGREGATE trait on that provider
> >
> > 4) Create an aggregate
> >
> > 5) Associate both the above provider and the compute node provider
> > with
> > the aggregate
> >
> > That's it. The compute node provider will now have access to the
> > CUSTOM_MAGIC resources that the other provider has in inventory.
>
> Something doesn't add up. We tried exactly your order of actions (see
> the script [1]) but placement returns an empty result (see the logs of
> the script[2], of the scheduler[3], of the placement[4]). However as
> soon as we add the MISC_SHARES_VIA_AGGREGATE trait to the compute
> provider as well then placement-api returns allocation candidates as
> expected.
>
> We are trying to get some help from the related functional test [5]
> but
> honestly we still need some time to digest that LOCs. So any direct
> help is appreciated.
I managed to create a functional test case that reproduces the above
problem https://review.openstack.org/#/c/485088/
>
>
> BTW, should I open a bug for it?
I also filed a bug so that we can track this work
https://bugs.launchpad.net/nova/+bug/1705071
Cheers,
gibi
>
>
>
> As a related question. I looked at the claim in the scheduler patch
> https://review.openstack.org/#/c/483566 and I wondering if that patch
> wants to claim not just the resources a compute provider provides but
> also custom resources like MAGIC at [6]. In the meantime I will go and
> test that patch to see what it actually does with some MAGIC. :)
>
> Thanks for the help!
> Cheers,
> gibi
>
> [1] http://paste.openstack.org/show/615707/
> [2] http://paste.openstack.org/show/615708/
> [3] http://paste.openstack.org/show/615709/
> [4] http://paste.openstack.org/show/615710/
> [5]
> https://github.com/openstack/nova/blob/0e6cac5fde830f1de0ebdd4eebc130de1eb0198d/nova/tests/functional/db/test_resource_provider.py#L1969
> [6]
> https://review.openstack.org/#/c/483566/3/nova/scheduler/filter_scheduler.py@167
> >
> >
> > Magic. :)
> >
> > Best,
> > -jay
> >
> > > I updated my script with the trait. [3]
> > >
> > >>
> > >> It's quite likely this is not well documented yet as this style
> of
> > >> declaring that something is shared was a later development. The
> > >> initial code that added the support for GET /resource_providers
> > >> was around, it was later reused for GET /allocation_candidates:
> > >>
> > >> https://review.openstack.org/#/c/460798/
> > >
> > > What would be a good place to document this? I think I can help
> with
> > > enhancing the documentation from this perspective.
> > >
> > > Thanks again.
> > > Cheers,
> > > gibi
> > >
> > >>
> > >> --
> > >> Chris Dent ┬──┬◡ノ(° -°ノ)
> > https://anticdent.org/
> > >> freenode: cdent tw:
> > @anticdent
> > >
> > > [3] http://paste.openstack.org/show/615629/
> > >
> > >
> > >
> > >
> > >
> >
> __________________________________________________________________________
> > > OpenStack Development Mailing List (not for usage questions)
> > > Unsubscribe:
> > OpenStack-dev-request at 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-request at 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-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
More information about the OpenStack-dev
mailing list