Re: "-otaperscan=XXX" override prevents reading of CONFIG/amanda.conf
Jean-Louis Martineau <[email protected]> Fri, 10 Nov 2017 16:26:13 -0500
| Newsgroups | gmane.comp.archivers.amanda.devel |
|---|---|
| Message-ID | <[email protected]> |
On 10/11/17 02:35 PM, Nathan Stratton Treadway wrote:
> On Fri, Nov 10, 2017 at 08:14:31 -0500, Jean-Louis Martineau wrote:
> > I just finished the patch, can you try it?
>
> Great, I will give the patch a try soon.
>
> If I understand the patch correctly, the cause of the problem was that
> config_init_with_global() was calling
> config_init(CONFIG_INIT_GLOBAL...), then which generated an error when
> the overrides were applied, since the "define taperscan" sections hadn't
> been parsed yet.
>
> If so, I was wondering why the overrides need to be applied twice?
> Would it make any sense to instead restructure config_init_with_global()
> and config_init() so that the program flow is more like this:
> init_defaults()
>
> attempt read_conffile(/etc/amanda/amanda.conf)
>
> read_conffile(/etc/amanda/CONFIG/amanda.conf)
>
> apply_config_overrides()
>
> Or, in other words, since the last occurance processed of each
> parameter takes
> precedence, is there any reason to apply the overrides between parsing
> the global amanda.conf and the CONFIG/amanda.conf?
There was inheritance issue.
The override must be applied to its value before something inherit from it.
>
> Nathan
>
>
> p.s. On a related note, I found that although the error messages are
> similar when I use an invalid storage name, and the parsing of the two
> looks very similar in conffile.c, I am able to successfully override the
> storage= with -o, and it continues to load TestBackup/amanda.conf even
> with that override in place:
>
> =====
> # amgetconf TestBackup storage -ostorage=bad
> parse error: storage 'bad' is not defined
> parse error: storage 'bad' is not defined
> amgetconf: errors processing config file at /usr/sbin/amgetconf line 363.
>
> # strace amgetconf TestBackup storage -ostorage=bad 2>&1 | grep
> amanda.conf
> open("/etc/amanda/amanda.conf", O_RDONLY) = -1 ENOENT (No such file or
> directory)
> open("/etc/amanda/TestBackup/amanda.conf", O_RDONLY) = 3
> read(3, "# amanda.conf - sample Amanda co"..., 4096) = 4096
>
>
> # amgetconf TestBackup storage -ostorage=TestOffsite
> TestOffsite
>
> # strace amgetconf TestBackup storage -ostorage=TestOffsite 2>&1 |
> grep amanda.conf
> open("/etc/amanda/amanda.conf", O_RDONLY) = -1 ENOENT (No such file or
> directory)
> open("/etc/amanda/TestBackup/amanda.conf", O_RDONLY) = 3
> read(3, "# amanda.conf - sample Amanda co"..., 4096) = 4096
> =====
>
> Do you know off-hand why -ostorage= and -otaperscan= have different
> behavior
> in this regard?
Because the code doesn't check if the storage is defined until the
complete configuration read
But it check immediately if the taperscan is defined
I think checking immediately is not needed, but its written like that
since a long time....
>
> Thanks.
>
>
> ----------------------------------------------------------------------------
> Nathan Stratton Treadway - [email protected] - Mid-Atlantic region
> Ray Ontko & Co. - Software consulting services - http://www.ontko.com/
> <http://www.ontko.com/>
> GPG Key: http://www.ontko.com/~nathanst/gpg_key.txt
> <http://www.ontko.com/~nathanst/gpg_key.txt>
> ID: 1023D/ECFB6239
> Key fingerprint = 6AD8 485E 20B9 5C71 231C 0C32 15F3 ADCD ECFB 6239
This message is the property of CARBONITE, INC. and may contain confidential or privileged information.
If this message has been delivered to you by mistake, then do not copy or deliver this message to anyone. Instead, destroy it and notify me by reply e-mail