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

양유석 ileixe at gmail.com
Tue Feb 11 12:05:23 UTC 2020


Thanks, from my understanding about QoS feature it looks like using
pre-created port which enable nova scheduling.

Now, I do not avoid thinking routed network does not implemented yet
since nova does not know the necessary information.
Comment from a guy in nova irc channel make my think more stronger. It
was so confused since neutron doc says it works well though..

2020년 2월 11일 (화) 오후 5:32, Lajos Katona <katonalala at gmail.com>님이 작성:
>
> 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.
>> >>



More information about the openstack-discuss mailing list