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

양유석 ileixe at gmail.com
Tue Feb 11 02:13:12 UTC 2020

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 mailing list