summaryrefslogtreecommitdiffstats
path: root/app-local-errors/README.md
blob: 403c5933077271a0d9e57bb773adedc7372c8a68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
## Introduction
This document captures steps for adding application specific error yaml files

### Write app specific error yaml files
Write error yamls for your application and place them in your application
repository.

Refer to *Host.errors.yaml* at
https://github.com/openbmc/openpower-debug-collector/blob/master/org/open_power/

### Makefile rules to run sdbus++ on error yaml files
Modify the Makefile.am as shown below for generation of error.cpp and erorr.hpp
```
org/open_power/Host/error.hpp: ${srcdir}/org/open_power/Host.errors.yaml
    @mkdir -p `dirname $@`
    $(SDBUSPLUSPLUS) -r $(srcdir) error exception-header org.open_power.Host > $@
```
```
org/open_power/Host/error.cpp: ${srcdir}/org/open_power/Host.errors.yaml
    @mkdir -p `dirname $@`
    $(SDBUSPLUSPLUS) -r $(srcdir) error exception-cpp org.open_power.Host > $@
```
### Write native recipe to copy error yaml files
Application specific error yaml files need to be copied to a known location
so that phosphor-logging can generate error metadata by parsing the error
yaml files.

Refer to **do_install_append** method in
**openpower-debug-collector-error-native.bb** at
https://github.com/openbmc/openbmc/blob/master/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/debug/

### Establish dependency with phosphor-logging
Establish dependency with phosphor-logging to ensure that error yaml files are
copied to a known location before phosphor logging parses the error yaml files

Refer to **phosphor-logging-error-logs-native.bbappend** at
https://github.com/openbmc/openbmc/blob/master/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/debug/

### Generate application local elog-errors.hpp file
Applications should be independently compilable so it cannot have a
dependency on the elog-errors.hpp generated by phosphor-logging

Generate application specific elog-errors.hpp using the elog-gen.py
parser. In the future, elog-errors.hpp will be generated through autotools.

The application specific elog-errors.hpp is for the build process and the
elog-errors.hpp from phosphor-logging will be used during elog commit/report

#### Example
python tools/elog-gen.py -y /home/OpenBmc/openpower-occ-control/ -u ./tools/ -t
tools/phosphor-logging/templates/ -m elog-gen-template.mako.hpp -o
elog-errors.hpp

### Reporting error
To report (commit) the error follow the below format
***report<sdbusplus::exception_t>(metadata)***
#### *example*
```
#include <xyz/openbmc_project/Software/Version/error.hpp>
#include "elog-errors.hpp" #Use application specific header file

using error =
 sdbusplus::xyz::openbmc_project::Software::Version::Error::ManifestFileFailure;
using metadata =
phosphor::logging::xyz::openbmc_project::Software::Version::ManifestFileFailure;
report<error>(metadata::PATH(tarFilePath.c_str())););
```
OpenPOWER on IntegriCloud