summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2018-06-29Added JSON utilities to allow easy exception-less usage of nlohmann JSON.Kowalski, Kamil3-0/+747
These functions are not yet used, but will be required by at least two upcoming patchsets. This functionality has been cut out from Configuration patchset for easier merge without having to wait for that commit. Change-Id: Ibe5d5cefd874d4a2d896b42a2b7cfc17480f3c5a Signed-off-by: Kowalski, Kamil <kamil.kowalski@intel.com>
2018-06-29Move thermal interfaces to new schemaEd Tanous4-126/+114
With the change to entity manager, move the thermal componets to the proper inventory manager interfaces Change-Id: I520e65b1df53ca8d3fbc12253882ae69b708bbbf Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-06-29Move bmcweb over to sdbusplusEd Tanous13-244/+306
This patchset moves bmcweb from using boost-dbus over entirely to sdbusplus. This has some nice improvements in performance (about 30% of CPU cycles saved in dbus transactions), as well as makes this project manuver closer to the upstream way of thinking. Changes to bmcweb are largely ceremonial, and fall into a few categories: 1. Moves async_method_call instances to the new format, and deletes any use of the "endpoint" object in leiu of the sdbusplus style interface 2. sdbus object_path object doesn't allow access to the string directly, so code that uses it moves to explicit casts. 3. The mapbox variant, while attempting to recreate boost::variant, misses a T* get<T*>() method implementation, which allows using variant without exceptions. Currently, there is an overload for mapbox::get_ptr implementation which replecates the functionality. Tested by: Booting the bmcweb on a target, iterating through redfish basic phosphor-webui usage, and websockets usage Change-Id: I2d95882908d6eb6dba00b9219a221dd96449ca7b Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-06-14Spelling fixes in redfish-coreGunnar Mills3-12/+12
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: Iaac459596247a9063350a129d0458ebe0c0e39ce Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
2018-06-13Fix headerGunnar Mills1-1/+1
Needed a space. Change-Id: Ie44a1feae140b1e6fd278afa0d07295d89f7ace2 Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
2018-06-13Spelling fixesGunnar Mills1-5/+5
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: Id065de1812c3eb383992533efd99b5079b74729d Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
2018-05-24Add MAINTAINERS fileAndrew Jeffery1-0/+47
Change-Id: I9dc3173ecc4f661e526426e8044ccacfac5a263e Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-05-18Introduce Thermal schemaLewanczyk, Dawid5-1/+491
Changes: -redfish.hpp add thermal node installation -thermal.hpp add thermal schema for chassis -sensor.hpp add support for retrieving: temperature, and fan Verification: -web server: no regression -RSV: pass -build on x86 and ASPEED This patchset builds on Dawids original. Change-Id: Ia8e40edff3c722fa02a161248bcdf602e36e3e62 Signed-off-by: Lewanczyk, Dawid <dawid.lewanczyk@intel.com> Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-04-25Remove hunter and submodulesEd tanous14-1009/+96
And use external project instead. This should make it easier to keep our systems up to date with yocto. Change-Id: Id2c9f3e474eebf2194eaf58b0c572f7a1421def6
2018-04-22Introduce Redfish Error messages definitionsKowalski, Kamil8-14/+2905
Added a python script that should be use to generate error_messages.cpp na .hpp files. These files as are not subject to change in a dynamic manner, should be regenerated only when MessageRegistry changes. Tested on x86 Ubuntu VM and Wolfpass platform: a) No regression in BMCWeb interface - Went through WebUI observed no changes in functionality b) No regression in Redfish functionality - Went through nodes and observed no changes in functionality - Sessions now return error messages in addition to HTTP codes Change-Id: I4aba9ee247b6cd2c46a9c158d14bdc7546e9b11b Signed-off-by: Kowalski, Kamil <kamil.kowalski@intel.com> Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-04-22Added VLAN Object to EthernetInterface schemaKowalski, Kamil1-1/+15
VLAN object added to EthernetInterface schema which is visible when Ethernet Interface is a VLAN interface. Does not break anything on Wolfpass or x86. BMCWeb working Change-Id: I965c484e6e120568db4e6542d2b48f8a7fb54fd0 Signed-off-by: Kowalski, Kamil <kamil.kowalski@intel.com> Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-04-22Enabling Ethernet Interfaces, and Ethernet Interfaces Collection SchemasRapkiewicz, Pawel7-1/+509
Commit provides Schemas for: * Single Eth Interface (GET) * Eth Interface Collection (GET) Both are using EthernetProvider, which delivers data available from xyz.openbmc_project.Network It was tested: * Regression (no regression in web server behaviour) * Memory Leaks (no leaks detected via valgrind) * Compiling multiple arch (x86, ASPEED) * Service Validator pass all available schemas Change-Id: Idee321cb294f48b59f7740512bbe416cf10236c0 Signed-off-by: Rapkiewicz, Pawel <pawel.rapkiewicz@intel.com> Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-04-22Fix an issue with directory permissionsEd Tanous1-0/+2
directory includes need to manage both the routes, just just the one ending in slash Change-Id: I1ba0e9021b212e88861aa720bb5a9d7610b72a9c Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-04-22Make middleware try other auth types on auth failureEd Tanous1-14/+20
This commit makes the authentication middleware attempt other auth mechanisms if available from the user. Signed-off-by: Ed Tanous <ed.tanous@intel.com> Tested By: Phosphor webui launches and logs in. Redfish endpoints now work with a cookie present. Change-Id: I7c11d4b5eb3c32c8e2b9ba348b70a55bfb72bd4e
2018-04-22Change order of authorization typesEd Tanous1-20/+20
Basic authentication is very slow by virtue of the fact that it has to call into pam. THis commit rearranges the flow to accomplish 2 things. 1. If a non-basic auth mechanism is provided, prefer that. 2. Check the whitelist first, before attempting to authenticate the user. Change-Id: Icfe5a218c00a2aeb53acd1ab00bb8cc568424d1d Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-04-22Fix seg fault on shutdownEd Tanous1-22/+20
Use unique_ptr correctly to avoid seg faults from double freed objects. Fixes the seg fault on shutdown that we've been seeing for a while. Change-Id: I4372c3bf727d5cdd870805b3ecba7f446c9a1985
2018-04-22Implement pretty printing json to HTMLEd Tanous5-40/+493
Change-Id: Ibe3cdc2cd53470ccd437b1b6e21bc7dd29c4b85e Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-04-22Clean up async dbus endpointEd Tanous1-134/+190
This commit makes the webui more compatible with the dbus backend, and cleans up the backend to support multiple concurrent transactions, as well as support for the "enumerate" keyword. Change-Id: I66144904b5c9b2ce7d1b1147cc80dfd356beb0bc Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-04-22Remove multithreaded code, and make crow use a single threadEd Tanous3-160/+72
Change-Id: I39e9ba84ab3464cf75b5bba82badb729525bf3b9 Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-04-22Disable logging when in release modeEd Tanous3-11/+10
This increases the performance of the webserver quite a bit. Change-Id: I20714d89163cf30c65afd18d16f4fd16c06824d5 Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-04-22Minor fixes to make redfish pass compliance testsEd Tanous6-45/+78
1. Role members needs to be an array, not an object 2. Fix accounts schema to use the new user manager 3. Remove "status" field hardcodes 4. Hardcode chassisType to rackmount for now 5. Work around bug in get sub routes 6. Add ID to SessionService Schema Change-Id: Ibb13d6ace747ac028e840638868c3a01d65dedfa Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-04-22Adding Chassis and ChassisCollection Schemas to RedfishRapkiewicz, Pawel3-28/+281
This commit: * removes previous redfish_v1 Chassis implementation * Adds Chassis and ChassisCollection implementation as Node way * Adds Chassis Provider class for retrieving data from EntityManager It was tested: * Wolfpass run, to see if previous functionality was not broken * Service Validator, which did not unveil any regression, and did verified that implemented schemas are complient. Change-Id: I75a9545a0abd8b85d6ce72329c523fc076affc28 Signed-off-by: Rapkiewicz, Pawel <pawel.rapkiewicz@intel.com> Signed-off-by: Ed Tanous <ed.tanous@intel.com> Signed-off-by: Rapkiewicz, Pawel <pawel.rapkiewicz@intel.com>
2018-04-20Wrap Cmake file on 80 charactersEd Tanous1-92/+115
And enable LTO only for non debug builds Change-Id: I3e5ea6fa88e5da3e9f8ab33a3e56355258025b9d Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-04-20Make getUrl not copyEd Tanous1-15/+24
Make get url return a const std::string* instead of a copy. Also, make the getSubroutes function modify strings in place rather than construct new strings where possible Change-Id: I68d8053a62abd8d907ecb6717e0f266eee4d09a8 Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-04-20Add full index support to static files loaderEd Tanous2-34/+23
... and remove file spcific check for redfish $metadata. This allows the $metadata to be pre-gzip compressed if we choose. Change-Id: I697bd7f8a8f5dc1a7b448d699b2daf93a296c248 Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-04-11Merge OEM and Base privileges bitsets into a single bitsetEd Tanous1-59/+31
This saves memory overall, and should lead to fewer runtime branches, and more inlining of functions overall. getPrivilegeIndex is now removed, as it is embedded into getActivePrivilegeNames. oemPrivilegeBitset and basePrivilegeBitset are now merged into a single privilegeBitset field TestedBy: Running relevant unit tests, which pass, and verifying login still functions Change-Id: Iaa4189b37f39cf65fa95b72b95ed92d8826cab0d Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-03-28Revert "Reduce executable size"Ed Tanous1-12/+0
This reverts commit 6aa3262a915bd42a92858106c31ece8cde493821. Change-Id: I59d74a8f435aa9e265706d555421e95ffc8f3d12 Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-03-28Make a few changes to privileges commitEd Tanous10-372/+239
1. Create char* overloads for the things that need it. 2. Fix up a couple errant moves 3. Use the gtest APIs for testing container membership, rather than sort 4. Move the index management to vector rather than map to avoid a lookup 5. Remove errant use of .at() 6. Move privilege comparison into the privilege class, in order to keep the bitset implementation private. This removes the requirment on the forward declaration of PrivilegeProvider, and the use of friend class 7. Remove unimplemented override strcutures. Feel free to add them back once implemented 8. Make setSignlePrivilege return a code if the set failed 9. Remove the need for an extra construction of a blank privileges object for things that require no privileges. Tested by: updating unit tests with the appropriate APIs. Relevant unit tests pass Change-Id: Ie9cde003b6c865979b4cac086379d0a3473896ce Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-03-28Make crow pretty print json responsesEd Tanous1-1/+1
While not ideal for a real deployment, making crow "pretty print" the json values aids in debug, and only introduces a mild performance degredation. TestedBy: checking /redfish/v1/ and verifying that it publishes correctly Change-Id: I9dbaa3a0500ef762ef4408852511b0e9b74cbd1f Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-03-28Remove the last couple uses of json get<>Ed Tanous1-17/+22
... and replace with the nothrow equivalent of get_ptr Change-Id: I2d2b83f757d06e8b088e62c6474003ca5cd53de5 Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-03-28Redfish Manager and ManagerCollectionBorawski.Lukasz3-53/+111
Node version of the Manager and ManagerCollection implementation. Change-Id: I693fa57add670fb0ecfc0cf0046e06142571c543 Signed-off-by: Borawski.Lukasz <lukasz.borawski@intel.com>
2018-03-28Redfish SessionServiceBorawski.Lukasz4-24/+43
- added node version of the SessionService implementation - added a default timeout member and a get timeout method to the SessionStore class Change-Id: I532080789b3d687208510f8b748402735ed888d8 Signed-off-by: Borawski.Lukasz <lukasz.borawski@intel.com>
2018-03-28Redfish NetworkProtocolBorawski.Lukasz4-58/+107
Node version of the NetworkProtocol implementation. Change-Id: I6f52dca4e530917a5b815a32f1222b481059aa23 Signed-off-by: Borawski.Lukasz <lukasz.borawski@intel.com>
2018-03-28Improved Refish subroutesBorawski.Lukasz8-109/+143
- getSubroutes() is now a method of the Node class - getSubroutes() is called only once per node at construction time, not at each GET request - template parameter removed from the Node class Change-Id: Ie4eb8766717aae566c13c295458fe0dba8ab84c0 Signed-off-by: Borawski.Lukasz <lukasz.borawski@intel.com>
2018-03-28Privilege implementation changeBorawski.Lukasz11-4881/+292
- privilege_registry.json has been removed - PrivilegeProvider class has been removed - default privileges for nodes are now hard-coded - privilege overriding feature is not yet implemented Change-Id: Ic9fdfa1c692c1abd26e339e2a8c702fc4aebd19f Signed-off-by: Borawski.Lukasz <lukasz.borawski@intel.com>
2018-03-28AccountServiceLewanczyk, Dawid4-24/+59
Initial version moved to separate node. Change-Id: I3fe4e2eb00bcb754ea81de0a0656f4de9eb9156c Signed-off-by: Lewanczyk, Dawid <dawid.lewanczyk@intel.com>
2018-03-28Redfish privilegesBorawski.Lukasz10-66/+5092
Redfish privilege authorization subsystem controlled by the privilege_registy.json configuration file. PropertyOverrides, SubordinateOverrides and ResourceURIOverrides are not yet implemented. Change-Id: I4d5670d557f4da172460ada3512e015830dab667 Signed-off-by: Borawski.Lukasz <lukasz.borawski@intel.com> Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-03-20update boost-dbus target to point at upstreamEd Tanous1-1/+1
Change-Id: If8a96107c4ec85947469a0b7d32d6cbf217516b2 Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-03-07Add OpenBmc Developing docsEd Tanous1-0/+568
The DEVELOPING file is intended to set expectations and requirements around the behavior or the OpenBmc webserver. While not a complete requirement list, it improves considerably upon the docs previously available. Change-Id: I0a7119017133aaf15874f9edab4967650e29dc63 Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-03-07Reduce executable sizeBorawski.Lukasz1-0/+12
Enable LTO, strip unnecassary symbols from .dynsym, use shared version of tinyxml2. Change-Id: I1883926f47f4dd00c7499af2bf952baefbde0d4f Signed-off-by: Borawski.Lukasz <lukasz.borawski@intel.com> Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-03-07Reimplement presistent data loading in no-throw wayKowalski, Kamil2-21/+73
Reimplemented persistent data file loading in no-throw approach to avoid errors during startup when bmcweb_persistent_data.json has been corrupted. Additionally this will allow to turn off all exceptions in the project (removed try-catch). Change-Id: I9bf863ebfd7ce9125d1e7e948f7ac739db94e009 Signed-off-by: Kowalski, Kamil <kamil.kowalski@intel.com> Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-03-07Fix unbounded memory consumption in crowBorawski.Lukasz1-0/+2
Connection objects wheren't deleted in case the async_accept() function returned an error. Fix found in the upstream crow repo: https://github.com/ipkn/crow/pull/205 Change-Id: I7d230c96a64cebf2b702ee58eac271bd0b989d3e Signed-off-by: Borawski.Lukasz <lukasz.borawski@intel.com> Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-03-07Refactor static asset loadingEd Tanous1-38/+39
1. Remove extra copy in loading body 2. Add gif and ico to the supported list 3. Log an error if the system fails to look up a content-type 4. Remove commented out caching code Change-Id: Ib079bb6f0eeacdcd60553af70b391e4b5150fb99 Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-03-07RolesLewanczyk, Dawid3-41/+88
Move roles and roles collection to new class based implementation Change-Id: I70f39bf8289fb45483a1e7f2c4eb3dbc1c7a7090 Signed-off-by: Lewanczyk, Dawid <dawid.lewanczyk@intel.com> Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-03-07Remove unused g3log fileEd Tanous1-13/+0
g3log is no longer used. Remove references to it. Change-Id: I5c9be513a0f688ca5d5ad8411f9a61d2e331b5cd Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-02-27Fix HTTP 405 code handlingBorawski.Lukasz1-0/+1
Until now code 405 in crow::reponse caused an Internal Server Error 500 - added HTTP 405 code handling to crow Change-Id: I9e07fb35eb4a2b697128fc036a391493e0258cb4 Signed-off-by: Borawski.Lukasz <lukasz.borawski@intel.com> Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-02-09Make bmcweb use yocto dependency managementEd Tanous2-5/+11
bmcweb will still build with submodules if the right flags are sent Change-Id: I227e011043a2242db29288b38b9f6069939635d4 Signed-off-by: Ed Tanous <ed.tanous@intel.com>
2018-02-06Session and SessionCollectionKowalski, Kamil8-323/+466
New Redfish-Core nodes added (removed from redfish_v1.hpp) - Session and SessionCollection. Tested manually on x86 VM and Wolfpass Platform. Behavior almost identical to what was before - differences: - SessionCollection - now only returns TIMEOUT presistence sessions, not SINGLE - Aquiring sessions from session storage now applies timeouts Change-Id: I68bf4fa7fa1c8371216a7d4daa30bbfb653cfa72 Signed-off-by: Kowalski, Kamil <kamil.kowalski@intel.com>
2018-02-06Reduce executable sizeBorawski.Lukasz1-4/+14
Enable LTO, strip unnecassary symbols from .dynsym, use shared version of tinyxml2. Change-Id: I6f68ecd264ffd11665d149f0ebd0108a06193c68 Signed-off-by: Borawski.Lukasz <lukasz.borawski@intel.com>
2018-02-06Add Eclipse rules to .gitignoreKowalski, Kamil1-1/+60
Change-Id: Ic34250e1f6472d68796e85c33256bbac75eeb9fd Signed-off-by: Kowalski, Kamil <kamil.kowalski@intel.com>