Comments (5)
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.
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.
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.
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.
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)
- Example virtual secondary configuration raises "Value is not convertible to bool." error. HOT 2
- Key Rotation Help HOT 4
- Import of an initial root.json from filesystem HOT 6
- support Nvidia board like Jestson TX2? HOT 2
- fsetxattr: Operation not supported HOT 2
- Read device ID HOT 2
- root role disappeared? HOT 7
- CMake Error, Cannot find source file: build/jsoncpp/jsoncpp.cc HOT 4
- clang-tidy-6.0 is not supported by debian:testing HOT 4
- Incorrect warning/error messages for Image Repo targets verification HOT 1
- Below unit tests are always failing HOT 4
- Build with PKCS#11 HOT 2
- Device initialization fails after successful provisioning HOT 10
- Aktualizr reports incorrect OSTree hash if it doesn't find the currently-booting version in its targets
- SecondaryTcpServer hangs when shutting down HOT 2
- Error
- Sql_schemas.cc being removed before it can be compared in embed_schemas.py HOT 4
- Aktaulizer is installed but not running
- Is aktualizr using TLS 1.3 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from aktualizr.