[neutron][ironic][nova][routed_network] what's normal workflow when ironic host added to nova from neutron?

Lajos Katona katonalala at gmail.com
Tue Feb 11 08:32:11 UTC 2020


Hi,

For routed prov. nets I am not sure how it was originally designed, and
what worked at that time,
but I have some insight to min guaranteed bandwidth feature.

For that neutron (based on agent config) creates placement stuff like
resource providers and inventories
(there the available bandwidth is the thing saved to placement RP
inventories).
When a port is created with QoS minimum bandwidth rule the port will have
an extra field
(see:
https://docs.openstack.org/api-ref/network/v2/index.html?expanded=show-port-details-detail#show-port-details
resource_request
field)
When nova fetch the port for booting a VM read this field and when asking
placement for hosts which are
available, in the request this information will be included and placement
will do the search with this extra resource need.
So this is how it should work, but as I know now routed provider nets
doesn't have this in place, so nova can't do the scheduling
based on ipv4_address needs.
The info is there in placement, but during boot the neutron-nova pair
doesn't know how to use it.

Sorry for the kitchen language :-)

Regards
Lajos

양유석 <ileixe at gmail.com> ezt írta (időpont: 2020. febr. 11., K, 3:13):

> The spec you sent is similar to my problem in that agent sent the
> 'host' which does not compatible with nova 'host'.
>
> But one more things which confuse me is for routed network (ironicless
> / + ironic) where the resource providers "IPV4_ADDRESS"  used in nova
> side?
> I could not find any code in nova/placement and from the past
> conversation (https://review.opendev.org/#/c/656885/), now I suspect
> it does not implemented.
>
> How then nova choose right compute node in a segment? Am i missing
> something or 'resource_provider_hypervisor' you mentioned are now used
> for general routed network?
>
> Thanks
>
> 2020년 2월 10일 (월) 오후 9:10, Lajos Katona <katonalala at gmail.com>님이 작성:
> >
> > Hi,
> >
> > Actually I know only the "ironicless" usecases of routed provider
> networks.
> > As I know neutron has the hostname from the agent (even from config or
> if not defined from socket.gethostname()).
> > For a similar feature (which uses placement guaranteed minimum
> bandwidth) there was a change that come from a
> > bug with perhaps Ironic usecases:
> > https://review.opendev.org/696600
> > the bug: https://bugs.launchpad.net/neutron/+bug/1853840
> >
> > The solution was to introduce a new config option called
> resource_provider_hypervisors
> > (
> https://review.opendev.org/#/c/696600/3/neutron/conf/plugins/ml2/drivers/mech_sriov/agent_common.py
> )
> > Without having experience with ironic based on your description your
> problem with routed provider nets is
> > similar and the config option should be used to make segments plugin use
> that for resource provider / host aggregate creation.
> >
> > Regards
> > Lajos
> >
> > 양유석 <ileixe at gmail.com> ezt írta (időpont: 2020. febr. 10., H, 10:42):
> >>
> >> Hi stacker,
> >>
> >> I'm trying to use ironic routed network from stein.
> >>
> >> I do not sure how the normal workflow works in nova/neutron/ironic
> >> side for routed network, so I sent this mail to get more information.
> >> From what I understand for ironic routed network, what I did
> >>
> >> - Enable segment plugin in Neutron
> >> - Add ironic 'node'
> >> - Add ironic port with physical network
> >> - network-baremetal plugin reports neutron from all ironic nodes.
> >>    - It sent 'physical_network' and 'ironic node uuid' to Neutron
> >>      - It make 'segmenthostmapping' entry with ('node uuid',
> 'segment_id')
> >>  -  Add segment for the subnet.
> >>
> >> At last step, I encountered the strange. In detail,
> >> - Neutron subnet update callback call nova inventory registration
> >>   - Neutron ask placement to create resource provider for segment
> >>   - Neutron ask nova to create aggregate for segment
> >>   - Neutron request placement to associate nova aggregate to resource
> provider.
> >>   - (Bug?) Neutron add hosts came from 'segmenthostmapping' to nova
> aggregate
> >>
> >> Since 'segmenthostmapping' has 'ironic node uuid' for host, nova deny
> >> to register the host to aggregate emitting the exception like below
> >>
> >> Returning 404 to user: Compute host
> >> 27004f76-2606-4e4a-980e-a385a01f04de could not be found. __call__
> >>
> >> What's strange for me is why neutron ask 'ironic node uuid' for host
> >> when nova aggregate only look for host from HostMapping which came
> >> from 'host' in compute_nodes.
> >>
> >> I could not find the code related to how 'ironic node uuid' can be
> >> registered in nova aggregate.
> >>
> >>
> >> Please someone who knows what's going on shed light on me.
> >>
> >> Thanks.
> >>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-discuss/attachments/20200211/46513d1f/attachment.html>


More information about the openstack-discuss mailing list