config-file: search multiple directories

Restricting the config file to `/usr/share` makes testing difficult
and prevents the config file from being present on a, typically for
the BMC, read-write volume.  Change the config loading code to search:

    1. pwd
    2. /var/lib/phosphor-virtual-sensor
    3. /usr/share/phosphor-virtual-sensor

Tested:

Ran strace on the changes and observed the expected file search.
```
getcwd("pwd/phosphor-virtual-sensor/builddir", 4096) = 75
newfstatat(AT_FDCWD, "pwd/phosphor-virtual-sensor/builddir/virtual_sensor_config.json", 0x7fff60a0af90, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/var/lib/phosphor-virtual-sensor/virtual_sensor_config.json", 0x7fff60a0af90, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/share/phosphor-virtual-sensor/virtual_sensor_config.json", 0x7fff60a0af90, 0) = -1 ENOENT (No such file or directory)
```

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I70854d565a3b13cd48c27a80da84de54c00a0603
4 files changed
tree: f5df8fabd26b17b2e1a6870f0bc4a74e7dee68f2
  1. subprojects/
  2. .clang-format
  3. .editorconfig
  4. .gitignore
  5. .prettierrc.yaml
  6. dbusSensor.hpp
  7. dbusUtils.hpp
  8. exprtkTools.hpp
  9. LICENSE
  10. meson.build
  11. OWNERS
  12. phosphor-virtual-sensor.service.in
  13. README.md
  14. thresholds.hpp
  15. virtual_sensor_config.json
  16. virtualSensor.cpp
  17. virtualSensor.hpp
README.md

phosphor-virtual-sensor

phosphor-virtual-sensor reads the configuration file virtual_sensor_config.json from one of three locations:

  1. The current directory.
  2. /var/lib/phosphor-virtual-sensor
  3. /usr/share/phosphor-virtual-sensor

By default the repository will install a sample config into (3).

There are two types of data in this file.

virtual sensor configuration information

See virtual_sensor_config.json in this repository for an example. Sensors added this way can use any expression that is accepted by exprtk.

information to get a virtual sensor configuraton from D-Bus

For example:

{
  "Desc": {
    "Config": "D-Bus",
    "Type": "ModifiedMedian"
  }
}

Sensors added this way can only use a set of restricted calculations. Currently the only type supported is modifiedMedian.

The virtual sensor configuration information needs to be added into the relevant hardware configuration file in entity-manager. This method of adding a virtual sensor allows a recipe that builds for different hardware configurations to have different virtual sensors for each configuration.

The virtual sensor configuration in entity manager follows a different format to the JSON in virtual_sensor_config.json (specified in entity-manager/schemas/VirtualSensor.json).