summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Add unit test for watches created on object pathsMarri Devender Rao2018-06-054-0/+86
| | | | | | | | | | Verify the watches created for the object path being watched for 'interfaces added' signal. Resolves openbmc/openbmc#3003 Change-Id: I88a3adbbe91fcbe5bdf606d2f460d4d0c6d9c1a2 Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com>
* Modify parser and add mako scripts for watch on object pathMarri Devender Rao2018-06-056-1/+282
| | | | | | | | | | | | | | Added support for watch and callback on 'interface added' signal for the specified object paths. Added mako scripts for events to auto create callback and watch objects for the specified object path groups. Clients specify object paths to watch and callbacks to invoke in the config.yaml file Change-Id: I3fa2ea1520649120b927c0cb83a16e5cace2f24e Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com>
* Add watch on D-Bus object pathsMarri Devender Rao2018-06-055-0/+128
| | | | | | | | | | | | | Clients specify the object paths to watch in the config yaml. Example yaml file and parser changes are pushed in separate patch Callbacks are invoked based on the watch type created i.e interfaceadded/interfaceremoved Change-Id: Icb7b9bf4c072f8b8df33747c813a1f07b61de637 Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com>
* Add SNMP event callback for error notificationMarri Devender Rao2018-06-055-1/+118
| | | | | | | | | | | | Added callback support for SNMP events. Parse the callback message and raise SNMP trap Clients specify the object paths to watch and callbacks to invoke in the config yaml. Change-Id: I105652f65e4e1c5354c934c88e4d59866540f71c Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com>
* Fix callback unit test failureMarri Devender Rao2018-06-052-0/+12
| | | | | | | | | | | | | | Recently changes has been done in phosphor-logging commit method causing the unit test failure with error message "Error in mapper call". Earlier commit method used to return error but the same has been modified to throw exception now. Fixed to return from the callback method if context is start Change-Id: I606c638bd2d0bc2003af0b284586e53809bbca21 Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com>
* Add persistency for eventsDhruvaraj Subhashchandran2018-04-118-5/+203
| | | | | | | | | Persist event D-bus objects using cereal Resolves openbmc/openbmc#2319 Change-Id: Ifa15d944fe1d1026761f65eeb647dcbdf6afdba0 Signed-off-by: Dhruvaraj Subhashchandran <dhruvaraj@in.ibm.com>
* Spelling fixesGunnar Mills2018-04-081-1/+1
| | | | | | | | | Spelling errors found using github.com/lucasdemarchi/codespell A tool to fix common misspellings. This tool is licensed under GNU General Public License, version 2. Change-Id: I78f191f26da14203dc21c97d4fc4a31f95ffc95f Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
* Enable clang-formatBrad Bishop2018-03-2932-1983/+1542
| | | | | | | Fix up errors and enable clang-format during CI builds. Change-Id: I4176b81f8b85a287af9354165e09ff66aeb9fb29 Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
* Add constants for tuple fieldsMatt Spinler2018-02-277-21/+32
| | | | | | | | | Add constants for use with std::get. Tested: Run unit tests Change-Id: Ic09c13feeda69d61c98f63d227cae8f08d1bf50e Signed-off-by: Matt Spinler <spinler@us.ibm.com>
* Add ElogWithMetaDataCapture classMatt Spinler2018-02-275-0/+185
| | | | | | | | | | | | | | | This callback class will create an error log with exactly 1 metadata field, which takes a string. This metadata field will be filled in with the property paths, names, and values of the properties that passed the condition checks that caused the callback to be called in the first place. Tested: Ran with YAML rules that used this callback and checked that everything worked as specified. Change-Id: Ib37206c63385939c583a09e7ba979d6e016691f6 Signed-off-by: Matt Spinler <spinler@us.ibm.com>
* count: Add missing functional includeBrad Bishop2018-02-271-0/+1
| | | | | | | | std::function is not found with a GCC 7.3 runtime. Change-Id: I4e5289794d405c42ab6291c211289d1ab175b197 Tested: Built repository with GCC 7.3 Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
* Save property check results in CountConditionMatt Spinler2018-02-231-1/+7
| | | | | | | | | | | | The CountCondition class checks each property in its index against some condition. Save the result of each of those checks in the 2nd tuple element of the storage entry for that property so that other code may access it. Tested: Build and run unit tests Change-Id: Ie99f02062c28d003e588a43bf042ecd2834ad9b2 Signed-off-by: Matt Spinler <spinler@us.ibm.com>
* Extend storage array to contain additional dataMatt Spinler2018-02-237-13/+17
| | | | | | | | | | | | | | | | | | | This array was originally just an array of objects of type 'any'. This commit changes it to be an array of tuples of type <any, any> to add an extra field for use by anything that needs it. For example, the storage is currently used to store property values, and a future change to the CountCondition class will now also store the result of the comparisons done between the property values and another value specified in the rule YAML. Then, a callback will be able to see the result of whether each property passed the check. Tested: Build and run unit tests Change-Id: I58f32c9f4068b15a02b1ff7f28871161cafebddb Signed-off-by: Matt Spinler <spinler@us.ibm.com>
* Add oneshot support to count conditionsMatt Spinler2018-02-235-5/+38
| | | | | | | | | | | | | | | | | | | | | | | | When a count condition is a oneshot, it will only trigger the callback the first time the condition is true. The condition needs to evaluate to false at least once to rearm the callback. A use case for this would be when a group of properties is being watched for a subset of them hit a certain value. Even though every properties changed signal for every property in the group would check the condition, only the first time the condition is true would the callback be issued. This behavior is specified with a 'oneshot: true' entry in the YAML. If not present, it defaults to false which is the original behavior. Tested: Verify this does indeed do what is advertised by modifying condition rules to consistently pass and checking behavior. Change-Id: Ie185621e86c605234bf329a5f38317267dbb6fb6 Signed-off-by: Matt Spinler <spinler@us.ibm.com>
* Implement event rotatingRatan Gupta2018-02-231-0/+7
| | | | | | | | | | Delete the oldest event of the same type if a particular type of event reaches threshold. Resolves openbmc/openbmc#2254 Change-Id: I2692193a027e82032f1d336515691de913bbb726 Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
* Implement create function in event managerRatan Gupta2018-02-236-6/+133
| | | | | | | | | Implement the logging event interface. Create the dbus event object based on the event type. Change-Id: Idfa9e5c43f170d904fd25f22d73e0509b1785fc9 Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
* Implement event manager classRatan Gupta2018-02-234-2/+97
| | | | | | | | | On handling of property change event, If callback is of type event then event manager would be asked to create the event dbus objects. Change-Id: I7f1d365d7f44a1cca54516e9ef555bb132d6b063 Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
* Don't take action if the callback is of event typeRatan Gupta2018-02-231-1/+9
| | | | | | | | | | | | | When event call back is called,There could be two context 1) As part of actual D-bus signal 2) During startup of dbus-monitor if event call back is called with context as startup then don't take any action. Corrected the index value to fetch the property name. Change-Id: Ifaae33dc78841c8f771fe3788e75f79d9de6ec12 Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
* Add callback contextsRatan Gupta2018-02-2215-26/+40
| | | | | | | | | | | | | | | | | Add the notion of a callback context. This enables callbacks to have logic around the conditions they were invoked in. There are two context on which call back can be invoked 1) Startup: during startup all the call backs will be called 2) Signal: As part of condition match on the watched properties. Callback would behave differently based on the context. eg: eventCallback 1) Startup: Don't take any action. 2) Signal: Create the Dbus Object for the event. Change-Id: If455558798ac3e44bbd8a93de0ce1b09d2e308ae Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
* Include missing header fileRatan Gupta2018-02-201-0/+2
| | | | | | | | we are using the std algo's in this file but missed to include the c++ algorithm header file. Change-Id: Ib88f810a048dba18526b7c7cf42d87ba095a27be Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
* Change the access mode of the function getBusRatan Gupta2018-02-201-6/+6
| | | | | | | | | | | | | | GetBus function provides the same instance of the bus application in the process. Now there is a need where we need the same bus instance at multiple places. Remove the friend loop, now it is not needed as we have changed the scope of getBus. Change-Id: I7e8cda45f3835b1d93be36f317741bc4ae6951a2 Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
* Adding the section for event call back.Ratan Gupta2018-02-201-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | eg:- - name: example event callback description: > 'Callbacks are actions PDM should take when instructed to do so. Some callback types refer to a group of paths and group of properties in a similar fashion as the property watch directive. The event callback creates the event D-Bus object with the given name and the event message. eg /xyz/openbmc_project/events/test/<id>' class: callback callback: event paths: example path group properties: example property group eventName: test eventMessage: "Test configuration changed." When fully implemented, event callbacks will create DBus objects for preconfigured DBus events. Change-Id: I73d46a9bc630763cc1a74877803a638f3a8d1e1f Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
* Initial support for event callbacksRatan Gupta2018-02-206-1/+143
| | | | | | | | | Add parser support for template rendering of events. Also defines the EventBase and Event classes. EventBase is parent of Event. Change-Id: I6b07b415acf510a8437529095bd489c0af73ddf5 Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
* Fix pep8 errors in pdmgen.pyMatt Spinler2017-11-141-0/+2
| | | | | Change-Id: I16cbfa2a3ed646f3ca0aeee0e71b3ada39062941 Signed-off-by: Matt Spinler <spinler@us.ibm.com>
* Add resolve callouts test to YAMLMatt Spinler2017-11-141-0/+7
| | | | | Change-Id: I9f21e6378f74bf9dd7d413557a80b47ec9c9f829 Signed-off-by: Matt Spinler <spinler@us.ibm.com>
* Add resolve callout exampleMatt Spinler2017-11-141-0/+16
| | | | | Change-Id: Ie80bff38947a79cc686eaf9db9c80453d28a4fb6 Signed-off-by: Matt Spinler <spinler@us.ibm.com>
* Add resolve callout rule support to YAML parserMatt Spinler2017-11-144-1/+20
| | | | | | | The callout to resolve is specified in the YAML. Change-Id: If613fae1959c6a54279b2a50c7d858f3e7d831b9 Signed-off-by: Matt Spinler <spinler@us.ibm.com>
* Set Resolved property on elog entryMatt Spinler2017-11-141-1/+39
| | | | | | | | Fill in the function that sets the Resolved property on an error log entry. Change-Id: I78b57c413a7047508b7fc95e0cf27e1ae6e871cf Signed-off-by: Matt Spinler <spinler@us.ibm.com>
* Find the error logs that have a certain calloutMatt Spinler2017-11-141-1/+51
| | | | | | | | | In order to find the error logs that have a specific callout, the code needs to look in the 'endpoints' property of the '<callout>/fault' D-Bus object. Change-Id: Idb9c06a6d815195ed47fb6ec914ba8f89539cb85 Signed-off-by: Matt Spinler <spinler@us.ibm.com>
* Add getBusName() utility function to SDBusPlusMatt Spinler2017-11-143-5/+28
| | | | | | | | Add a function to SDBusPlus to get the D-Bus bus name for an object path and interface. Change-Id: I7d7a533c7430fcf42e1e0f6a21a2453e6c8197ea Signed-off-by: Matt Spinler <spinler@us.ibm.com>
* Add ResolveCallout classMatt Spinler2017-11-144-2/+105
| | | | | | | | | | | | | | | This class is a type of callback, and when triggered will resolve all error log entries that have the specified callout. It does this by setting the Resolved property on the log entry. It can be used to do things like resolve all errors against a particular part when that part is replaced, which would be done by specifying this class as a callback on a watch on the Present property for the part in the inventory. Change-Id: I50557938c9e15a91744ee2a16d67eaa7f367ef04 Signed-off-by: Matt Spinler <spinler@us.ibm.com>
* Spelling fixesGunnar Mills2017-10-257-13/+13
| | | | | | | | | Spelling errors found using github.com/lucasdemarchi/codespell A tool to fix common misspellings. This tool is licensed under GNU General Public License, version 2. Change-Id: I83c844373ea41d762367085cb16b01d31676e33d Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
* Add more elog testsGunnar Mills2017-08-213-4/+34
| | | | | | | Add tests to callbackgroupgentest/test.yaml Change-Id: I0b9d4799dd3ed3a4876115594aacbd80caa3f9d0 Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
* Add elog to example.yamlGunnar Mills2017-08-211-0/+22
| | | | | Change-Id: I97f73dd310cae4b2d67122bc51414e2a5397f0b3 Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
* Add tests for elogGunnar Mills2017-08-212-1/+55
| | | | | Change-Id: I58a6ac714cfa80462ab53d4487dc727e40038b06 Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
* Add support for metadataGunnar Mills2017-08-213-9/+66
| | | | | | | | Added support for metadata in elog.hpp, elog mako file, and pdmgen. This metadata will be added with the error log. Change-Id: Iaf0fe24d71f6bdd02b51df208b2c1d66c68319d3 Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
* Add support for elog callbackGunnar Mills2017-08-215-0/+31
| | | | | | | | | | | Added support for "callback: elog" in PDM. templates/elog.mako.cpp is used to generate the Elog call. templates/errors.mako.hpp is used to generate the errors.hpp used by generated.hpp to include any error.hpp files like "xyz/openbmc_project/Common/error.hpp" Change-Id: Id0ae3aca4282095f58a8939b70e398bec706d7f5 Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
* Create new Elog classGunnar Mills2017-08-214-0/+106
| | | | | | | | Created new Elog callback, which will create an error log. This is just the base, more to come. Change-Id: I50c12c8bff0942b5cb027e38d0cc8691e8a241b4 Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
* Grammar fixes in example.yamlGunnar Mills2017-08-141-6/+6
| | | | | Change-Id: Ia9ae40f1bd590945e2fee662e4437b92c8bd9b09 Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
* Remove dead codeBrad Bishop2017-06-2810-767/+0
| | | | | | | Remove a number of unused files. Change-Id: If7e40d2be7eb3f5d84538a3c86f911df268a1f34 Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
* Remove use of std::crefBrad Bishop2017-06-191-6/+6
| | | | | | | Prefer implicit conversion for readability. Change-Id: I64d04b926edea0531a5414a416c04b36ae3d5e2a Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
* Attach sdevent mainloop to dbusBrad Bishop2017-06-193-10/+28
| | | | | | | | Switch from sd_bus process to sd_event run so that sd event handlers are invoked. Change-Id: If7c1f046f30cc845c6e9fcc72eb99c5bdfb36052 Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
* expose watch callbacksBrad Bishop2017-06-193-8/+28
| | | | | | | | | | | | Allow watch class users to explicitly invoke the watch callback. Since watches and callbacks share a common pool of state all watches must complete their initialization prior to invoking their callback methods. Change-Id: I62ebad64da88a145f3d5006b07c01381b0eb6728 Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
* Invoke callbacks under make checkBrad Bishop2017-06-193-0/+28
| | | | | | | | | Add a simple test that invokes all the callbacks. There are no assertions but there is some value in ensuring the application will at least run without crashing. Change-Id: I117bff261202ae7e642094a659a954328351eac1 Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
* Fix bool and string templates/renderingBrad Bishop2017-06-195-8/+452
| | | | | | | | Fix a number of bugs related to rendering and instantiation of string and bool templates. Change-Id: Ic75842b4016f4d96bf5850f9c4ad778d82e075ed Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
* pdmgen: Require uppercase meta keysBrad Bishop2017-06-1914-72/+84
| | | | | | | | | journald ignores lowercase metadata keys so require them to be uppercase. Abort the config file parse when lowercase keys are found. Change-Id: Icffffdc6680b4d305329c3395f8e2fda6210964f Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
* build: Correct out of tree build bugsBrad Bishop2017-06-192-7/+7
| | | | | Change-Id: Id6e14414c6f15c11d1476039e3781d719f693d21 Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
* Add deferrable callbacksBrad Bishop2017-06-195-6/+111
| | | | | | | | | | | Deferrable callbacks delay callback invocation until a pre configured length of time has elapsed. One example scenario where deferrable callbacks help is to avoid oscillation when testing a condition and making callbacks frequently. Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com> Change-Id: I180c99b57ec1c9bde4da76d947a026f809341c8a
* Add SDEvent delegateBrad Bishop2017-06-192-0/+83
| | | | | | | | Add an sd-event interface abstraction to facilitate mocking and unit test. Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com> Change-Id: I5880617565fc6eab54335adc30033d4b132568f8
* Add sdevent C++ wrappersBrad Bishop2017-06-193-0/+392
| | | | | | | | | | | Add C++ wrappers around select sd-event APIs, for a more C++ like programming API. Includes support for core sd_event and timer related sd_event_source APIs. Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com> Change-Id: I10ac5406c9f8831b4efb294d3aef36026469d4a5
OpenPOWER on IntegriCloud