<div dir="ltr">Hi,<div><br></div><div>For routed prov. nets I am not sure how it was originally designed, and what worked at that time, </div><div>but I have some insight to min guaranteed bandwidth feature.</div><div><br></div><div>For that neutron (based on agent config) creates placement stuff like resource providers and inventories</div><div>(there the available bandwidth is the thing saved to placement RP inventories).</div><div>When a port is created with QoS minimum bandwidth rule the port will have an extra field </div><div>(see: <a href="https://docs.openstack.org/api-ref/network/v2/index.html?expanded=show-port-details-detail#show-port-details">https://docs.openstack.org/api-ref/network/v2/index.html?expanded=show-port-details-detail#show-port-details</a> resource_request field)</div><div>When nova fetch the port for booting a VM read this field and when asking placement for hosts which are</div><div>available, in the request this information will be included and placement will do the search with this extra resource need.</div><div>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</div><div>based on ipv4_address needs.</div><div>The info is there in placement, but during boot the neutron-nova pair doesn't know how to use it.</div><div><br></div><div>Sorry for the kitchen language :-)</div><div><br></div><div>Regards</div><div>Lajos</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">양유석 <<a href="mailto:ileixe@gmail.com">ileixe@gmail.com</a>> ezt írta (időpont: 2020. febr. 11., K, 3:13):<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">The spec you sent is similar to my problem in that agent sent the<br>
'host' which does not compatible with nova 'host'.<br>
<br>
But one more things which confuse me is for routed network (ironicless<br>
/ + ironic) where the resource providers "IPV4_ADDRESS"  used in nova<br>
side?<br>
I could not find any code in nova/placement and from the past<br>
conversation (<a href="https://review.opendev.org/#/c/656885/" rel="noreferrer" target="_blank">https://review.opendev.org/#/c/656885/</a>), now I suspect<br>
it does not implemented.<br>
<br>
How then nova choose right compute node in a segment? Am i missing<br>
something or 'resource_provider_hypervisor' you mentioned are now used<br>
for general routed network?<br>
<br>
Thanks<br>
<br>
2020년 2월 10일 (월) 오후 9:10, Lajos Katona <<a href="mailto:katonalala@gmail.com" target="_blank">katonalala@gmail.com</a>>님이 작성:<br>
><br>
> Hi,<br>
><br>
> Actually I know only the "ironicless" usecases of routed provider networks.<br>
> As I know neutron has the hostname from the agent (even from config or if not defined from socket.gethostname()).<br>
> For a similar feature (which uses placement guaranteed minimum bandwidth) there was a change that come from a<br>
> bug with perhaps Ironic usecases:<br>
> <a href="https://review.opendev.org/696600" rel="noreferrer" target="_blank">https://review.opendev.org/696600</a><br>
> the bug: <a href="https://bugs.launchpad.net/neutron/+bug/1853840" rel="noreferrer" target="_blank">https://bugs.launchpad.net/neutron/+bug/1853840</a><br>
><br>
> The solution was to introduce a new config option called resource_provider_hypervisors<br>
> (<a href="https://review.opendev.org/#/c/696600/3/neutron/conf/plugins/ml2/drivers/mech_sriov/agent_common.py" rel="noreferrer" target="_blank">https://review.opendev.org/#/c/696600/3/neutron/conf/plugins/ml2/drivers/mech_sriov/agent_common.py</a> )<br>
> Without having experience with ironic based on your description your problem with routed provider nets is<br>
> similar and the config option should be used to make segments plugin use that for resource provider / host aggregate creation.<br>
><br>
> Regards<br>
> Lajos<br>
><br>
> 양유석 <<a href="mailto:ileixe@gmail.com" target="_blank">ileixe@gmail.com</a>> ezt írta (időpont: 2020. febr. 10., H, 10:42):<br>
>><br>
>> Hi stacker,<br>
>><br>
>> I'm trying to use ironic routed network from stein.<br>
>><br>
>> I do not sure how the normal workflow works in nova/neutron/ironic<br>
>> side for routed network, so I sent this mail to get more information.<br>
>> From what I understand for ironic routed network, what I did<br>
>><br>
>> - Enable segment plugin in Neutron<br>
>> - Add ironic 'node'<br>
>> - Add ironic port with physical network<br>
>> - network-baremetal plugin reports neutron from all ironic nodes.<br>
>>    - It sent 'physical_network' and 'ironic node uuid' to Neutron<br>
>>      - It make 'segmenthostmapping' entry with ('node uuid', 'segment_id')<br>
>>  -  Add segment for the subnet.<br>
>><br>
>> At last step, I encountered the strange. In detail,<br>
>> - Neutron subnet update callback call nova inventory registration<br>
>>   - Neutron ask placement to create resource provider for segment<br>
>>   - Neutron ask nova to create aggregate for segment<br>
>>   - Neutron request placement to associate nova aggregate to resource provider.<br>
>>   - (Bug?) Neutron add hosts came from 'segmenthostmapping' to nova aggregate<br>
>><br>
>> Since 'segmenthostmapping' has 'ironic node uuid' for host, nova deny<br>
>> to register the host to aggregate emitting the exception like below<br>
>><br>
>> Returning 404 to user: Compute host<br>
>> 27004f76-2606-4e4a-980e-a385a01f04de could not be found. __call__<br>
>><br>
>> What's strange for me is why neutron ask 'ironic node uuid' for host<br>
>> when nova aggregate only look for host from HostMapping which came<br>
>> from 'host' in compute_nodes.<br>
>><br>
>> I could not find the code related to how 'ironic node uuid' can be<br>
>> registered in nova aggregate.<br>
>><br>
>><br>
>> Please someone who knows what's going on shed light on me.<br>
>><br>
>> Thanks.<br>
>><br>
</blockquote></div>