← Back to team overview

cloud-init team mailing list archive

Re: The "maybe trap"

 

Hi,

On 3/13/24 19:59, Brett Holman wrote:
On aarch64 we are falling into the DS_MAYBE from [1] trap. While I do
not see any particular reason not to have a

aarch64) :;;

case to make this deterministic on aarch64 it does ultimately only work
as long as what we are doing sticks to those architectures.

As such I'd really like to get a better understanding why DS_MAYBE
exists. The way I see it it let's ds-identify kind of bail out and pass
the responsibility of identifying a data source to cloud-init by
enabling cloud-init.target.

When this was added, OpenStack was incapable of identifying itself on
non-x86 architectures[1]. The workaround, as you found, was to assume
Openstack is a possible datasource, and pass responsibility to cloud-init.
This unfortunately means that, yes, openstack is assumed on all non-x86
architectures.



Thanks for confirmation. When the responsibility for seraching for a data source is passed from ds-identify to cloud-init it is my understanding that cloud-init will write the cloud-id file, which is symlinked form /run/cloud-init/cloud-id. The file will contain "none" if an only if no data source if found, at least that is what I think based on looking through the data sources code.

This means, we could trigger of this to run a different setup process to isolate us from the format of the status.json file.

Is this correct?

Thanks,
Robert




DMI support on aarch64 has since made its way upstream[2],
however I don't think that anyone has gotten around to verifying whether
OpenStack correctly passes this information through Libvirt.

It looks like Libvirt is aware of aarch64 support for SMBIOS[3], but it doesn't
seem like nova is aware of this yet[4]. I don't know how to go about getting
this fixed, but I naively hope that the attached patch might be a step in the
right direction. Nova's development model / platform isn't intuitive to me,
but if someone knows the right folks to ask about this fix, that would be
helpful towards resolving the issue that you've raised.

Cheers,
Brett

[1] https://bugs.launchpad.net/cloud-init/+bug/1663304
[2] https://bugs.launchpad.net/bugs/1662345
[3] https://github.com/libvirt/libvirt/commit/ec6ce6363a78aaaf6e3aa4c0e2d683d7d0cce183
[4] https://github.com/openstack/nova/blob/db9351ab5191e058994209464aa7fc2b2fa34561/nova/virt/libvirt/driver.py#L6856

On Wed, Mar 13, 2024 at 2:17 PM Robert Schweikert <rjschwei@xxxxxxxx> wrote:

Hi,

On aarch64 we are falling into the DS_MAYBE from [1] trap. While I do
not see any particular reason not to have a

aarch64) :;;

case to make this deterministic on aarch64 it does ultimately only work
as long as what we are doing sticks to those architectures.

As such I'd really like to get a better understanding why DS_MAYBE
exists. The way I see it it let's ds-identify kind of bail out and pass
the responsibility of identifying a data source to cloud-init by
enabling cloud-init.target.

And this is where we are tripping over because we check if cloud-init
got enabled and if it did we skip other stuff. But in this case we need
other stuff to happen.

So instead of checking on whether or not cloud-init got enabled would it
make more sense to check what is in /run/cloud-init/cloud-id?

If it contains "none" do our special stuff?

Thanks,
Robert

[1]
https://github.com/canonical/cloud-init/blob/main/tools/ds-identify#L1368

--
Robert Schweikert                   MAY THE SOURCE BE WITH YOU
Distinguished Engineer                       LINUX
rjschwei@xxxxxxxx
IRC: robjo

--
Mailing list: https://launchpad.net/~cloud-init
Post to     : cloud-init@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~cloud-init
More help   : https://help.launchpad.net/ListHelp

--
Robert Schweikert                   MAY THE SOURCE BE WITH YOU
Distinguished Engineer                       LINUX
rjschwei@xxxxxxxx
IRC: robjo


Follow ups

References