[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>님이 작성:
> 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 :-)
> 양유석 <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
>> 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?
>> 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