Overwrite policies#
Types of policies#
For configs and patterns there exist two overwrite directive policies. They are:
Do not overwrite if directives from the configs are already defined in the Bacula resource configuration. Add only new ones.
Overwrite if directives from the configs are already defined in the Bacula resource configuration.
Overwriting coresponds both for simple directives with a simple scalar values (like string, integer, size, time or boolean values) and for complex values (like arrays or objects).
Policy: Do not overwrite#
In case if the config and the Bacula resource have the same directives defined,
this policy causes that the same directives will not be applied. Other directives
that are different will be added to configuration. This do not overwrite
policy is set by default.
Example for simple value#
In the config we have the following directive:
Maximum Concurrent Jobs = 10
In Bacula configuration resource this directive already exists:
Maximum Concurrent Jobs = 25
In result, Maximum Concurrent Jobs
directive will be untouched and it
will stay value 25
:
Maximum Concurrent Jobs = 25
Example for complex value#
In the config we have the following directive:
Storage = "My new storage"
In Bacula configuration resource this directive already exists and has three values:
Storage = "Storage A"
Storage = "Storage B"
Storage = "Storage C"
The result will be the following:
Storage = "Storage A"
Storage = "Storage B"
Storage = "Storage C"
Storage = "My new storage"
Policy: Overwrite#
In case if the config and the Bacula resource have the same directives defined, enabling this policy will cause that the same directives will be overwritten by values from the config. Other directives that are different in config and Bacula configuration will be added to the resource configuration.
Please note, if there is applied config with Name
directive defined on single resource
and the overwrite policy is enabled, this resource will be renamed to name
that is in config. For applying this config to multiple resources, the first resource
will be renamed and after the process will fail because there cannot be multiple
the same type resources with the same name in the Bacula configuration.
Example for simple value#
In the config we have the following directive:
Maximum Concurrent Jobs = 10
In Bacula configuration resource this directive already exists:
Maximum Concurrent Jobs = 25
In result, Maximum Concurrent Jobs
directive will be overwritten and the
value will be set to 10
:
Maximum Concurrent Jobs = 10
Example for complex value#
In the config we have the following directive:
Storage = "My new storage"
In Bacula configuration resource this directive already exists and has three values:
Storage = "Storage A"
Storage = "Storage B"
Storage = "Storage C"
The result will be the following:
Storage = "My new storage"
API config format#
To better understand how the overwriting works, it can be useful to see in the Bacularis API panel how there look example resource configurations in the JSON format. For example:
{
"Pool": {
"Name": "Differential-VTL",
"PoolType": "Backup",
"ActionOnPurge": "Truncate",
"MaximumVolumeJobs": 5,
"VolumeRetention": 18144000,
"VolumeUseDuration": 86400,
"Storage": [
"Storage A",
"Storage B",
"Storage C"
],
"AutoPrune": true,
"Recycle": true,
"RecyclePool": "Scratch",
"ScratchPool": "Scratch"
}
}
Here we can see that the three storage directives in Bacula configuration:
Storage = "Storage A"
Storage = "Storage B"
Storage = "Storage C"
in the JSON form are one complex value that is an array:
"Storage": [
"Storage A",
"Storage B",
"Storage C"
]
Examples#
Config directives |
Bacula config |
Result - overwrite disabled |
Result - overwrite enabled |
---|---|---|---|
aaa = "config"
|
bbb = "bacula"
|
aaa = "config"
bbb = "bacula"
|
aaa = "config"
bbb = "bacula"
|
aaa = "config"
|
aaa = "bacula"
|
aaa = "bacula"
|
aaa = "config"
|
aaa = "config"
bbb = "config"
|
aaa = "bacula"
ccc = "bacula"
|
aaa = "bacula"
bbb = "config"
ccc = "bacula"
|
aaa = "config"
bbb = "config"
ccc = "bacula"
|
aaa = "config"
|
aaa = "bacula1"
aaa = "bacula2"
|
aaa = "bacula1"
aaa = "bacula2"
aaa = "config"
|
aaa = "config"
|