<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body><p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">Hi,</p>
<br /><p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">Dnia piÄ…tek, 11 czerwca 2021 09:57:27 CEST Rodolfo Alonso Hernandez pisze:</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> Hello Takashi and Neutrinos:</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> First of all, thank you for working on this.</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> Currently users have the ability to override the host name using</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> "resource_provider_hypervisors". That means this parameter is always</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> configurable; IMO we are safe on this.</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> The problem we have is how we should retrieve this host name if</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> "resource_provider_hypervisors" is not provided. I think the solution could</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> be a combination of:</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> - A first patch providing the ability to select the hypervisor type. The</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> default one could be "libvirt". Each driver can have a particular host name</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> retrieval implementation. The default one will be the implemented right</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> now: "socket.gethostname()"</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> - https://review.opendev.org/c/openstack/neutron/+/788893, providing</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> full compatibility for libvirt.</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> Those are my two cents.</p>
<br /><p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">We can move on with the patch <a href="https://review.opendev.org/c/openstack/neutron/+/763563">https://review.opendev.org/c/openstack/neutron/+/763563</a> to provide new config option as it's now and additionally implement <a href="https://review.opendev.org/c/openstack/neutron/+/788893">https://review.opendev.org/c/openstack/neutron/+/788893</a> so users who are using libvirt will not need to change anything, but if someone is using other hypervisor, this will allow adjustments. Wdyt?</p>
<br /><p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> Regards.</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> On Thu, Jun 10, 2021 at 4:12 PM Takashi Kajinami <tkajinam@redhat.com></p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> wrote:</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > Hi All,</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > I've been working on bug 1926693[1], and am lost about the reasonable</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > solutions we expect. Ideally I'd need to bring this topic in the team</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > meeting</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > but because of the timezone gap and complicated background, I'd like to</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > gather some feedback in ml first.</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > [1] https://bugs.launchpad.net/neutron/+bug/1926693</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > TL;DR</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > Which one(or ones) would be reasonable solutions for this issue ?</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > (1) https://review.opendev.org/c/openstack/neutron/+/763563</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > (2) https://review.opendev.org/c/openstack/neutron/+/788893</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > (3) Implement something different</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > The issue I reported in the bug is that there is an inconsistency between</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > nova and neutron about the way to determine a hypervisor name.</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > Currently neutron uses socket.gethostname() (which always returns</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > shortname)</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > to determine a hypervisor name to search the corresponding resource</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > provider.</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > On the other hand, nova uses libvirt's getHostname function (if libvirt</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > driver is used)</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > which returns a canonical name. Canonical name can be shortname or FQDN</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > (*1)</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > and if FQDN is used then neutron and nova never agree.</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > (*1)</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > IMO this is likely to happen in real deployments. For example, TripelO uses</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > FQDN for canonical names.</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > Neutron already provides the resource_provider_defauly_hypervisors option</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > to override a hypervisor name used. However because this option accepts</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > a map between interface and hypervisor, setting this parameter requires</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > very redundant description especially when a compute node has multiple</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > interfaces/bridges. The following example shows how redundant the current</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > requirement is.</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > ~~~</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > [OVS]</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > resource_provider_bandwidths=br-data1:1024:1024,br-data2:1024:1024,\</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > br-data3:1024,1024,br-data4,1024:1024</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > resource_provider_hypervisors=br-data1:compute0.mydomain,br-data2:\</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > compute0.mydomain,br-data3:compute0.mydomain,br-data4:compute0.mydomain</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > ~~~</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > I've submitted a change to propose a new single parameter to override</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > the base hypervisor name but this is currently -2ed, mainly because</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > I lacked analysis about the root cause of mismatch when I proposed this.</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > (1) https://review.opendev.org/c/openstack/neutron/+/763563</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > On the other hand, I submitted a different change to neutron which</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > implements</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > the logic to get a hypervisor name which is fully compatible with libvirt.</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > While this would save users from even overriding hypervisor names, I'm</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > aware</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > that this might break the other virt driver which depends on a different</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > logic</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > to generate a hypervisor name. IMO the patch is still useful considering</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > the libvirt driver would be the most popular option now, but I'm not fully</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > aware of the impact on the other drivers, especially because I don't know</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > which virt driver would support the minimum QoS feature now.</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > (2) https://review.opendev.org/c/openstack/neutron/+/788893/</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > In the review of (2), Sean mentioned implementing a logic to determine</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > an appropriate resource provider(3) even if there is a mismatch about</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > host name format, but I'm not sure how I would implement that, tbh.</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > My current thought is to merge (1) as a quick solution first, and discuss</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > whether</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > we should merge (2), but I'd like to ask for some feedback about this plan</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > (like we should NOT merge (2)).</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > I'd appreciate your thoughts about this $topic.</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > Thank you,</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">> > Takashi</p>
<br /><br /><p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">-- </p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">Slawek Kaplonski</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">Principal Software Engineer</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">Red Hat</p>
</body>
</html>