Coder Social home page Coder Social logo

Comments (5)

ricardosalveti avatar ricardosalveti commented on June 29, 2024

It's normal for software to have default configs at /usr/lib/foo and user defined ones at /etc/foo (and usually they are parsed while loaded, so you know a certain config option set in a fragment in /etc will always have higher priority over one set in /usr).

from aktualizr.

pattivacek avatar pattivacek commented on June 29, 2024

Unfortunately, the behavior you are seeing is what I would expect based on https://docs.ota.here.com/ota-client/latest/aktualizr-config-options.html#_how_toml_files_are_processed. It is intentional that the files are sorted lexicographically before parsing. We expect the config files to be prefixed with a numeric priority, but your sota.toml doesn't have that, and it gets processed last. /var/sota/sota.toml is a relic of the past for us, and we don't treat it specially.

from aktualizr.

ricardosalveti avatar ricardosalveti commented on June 29, 2024

But even without var/sota/sota.toml we might experience a few issues from the way I see:
1 - Files under /usr/lib/sota/conf.d and /etc/sota/conf.d/ with the same filename but different content might result in configs not being parsed at all (and the user would have to know that it is not creating a file in etc that is conflicting with one present at usr).
2 - Configs at /etc/sota/conf.d/ might end up being ignored if it has a lower number index prepending the file name with a similar one available at /usr/lib/sota/conf.d, since what matters in the end is the order of the file names, and not the original location.

from aktualizr.

pattivacek avatar pattivacek commented on June 29, 2024

Perhaps it is worth restating that this config parsing system was intended to match the way systemd's configuration is handled. It's not exact, since the use case is slightly different, but the principles are similar. I think what is most confusing, though, is that you can manually pass in config directories and paths and it's not entirely obvious how they are treated.

I think this isn't the most straightforward system, but it is quite flexible, which was the goal. I'm hesitant to change it, though, because it could be a subtle change that might break things for people in unexpected ways without them noticing.

1 - Files under /usr/lib/sota/conf.d and /etc/sota/conf.d/ with the same filename but different content might result in configs not being parsed at all (and the user would have to know that it is not creating a file in etc that is conflicting with one present at usr).

Yes, that is correct and intended. The point is that /usr/lib is provided by the image while /etc can be manually edited.

2 - Configs at /etc/sota/conf.d/ might end up being ignored if it has a lower number index prepending the file name with a similar one available at /usr/lib/sota/conf.d

Yes, that is correct and intended.

since what matters in the end is the order of the file names, and not the original location.

Both aspects matter. The directories are searched in order of preference for files, with can result in some files being ignored in favor of later ones found with the same name, and the resulting list is parsed in alphabetic order, meaning settings in some can be overruled by others.

from aktualizr.

ricardosalveti avatar ricardosalveti commented on June 29, 2024

I think this isn't the most straightforward system, but it is quite flexible, which was the goal. I'm hesitant to change it, though, because it could be a subtle change that might break things for people in unexpected ways without them noticing.

Right, while confusing in a way, changing this behavior will indeed cause unexpected side effects.

from aktualizr.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.