summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Don't store LogEntry IDs across requestsJason M. Bills2019-08-021-4/+30
| | | | | | | | | | | | | | | | Because the previous timestamp is stored across Entries requests, a single entry will increment the ID on every refresh since the previous timestamp will always match. This change clears the previous timestamp on the first entry of each request. Tested: Refreshed a single LogEntry many times and confirmed that the ID does not change. Change-Id: I8bf81b6c2eb6ac4037a17008ba54ebfccb42e0dd Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Fix for Download dump file with original file nameRamesh Iyyar2019-08-021-0/+24
| | | | | | | | | | | | | | | | | | | Issue: The downloaded dump file name is having dump id instead of actual dump file name. Solution: Added "Content-Disposition" header into http response packet with filename as actual dump file name. So, The downloaded dump file will be saved in actual dump file name when downloading the dump file by using dump id. Tested By: - curl -O -J -c cjar -b cjar -k -H "X-Auth-Token: $bmc_token" https: //$bmc_ip/download/dump/DUMP_ID Change-Id: Id4726da20081e7d57d62038f672169f440edecfd Signed-off-by: Ramesh Iyyar <rameshi1@in.ibm.com>
* Ignore charset for /login attemptsEd Tanous2019-08-021-1/+3
| | | | | | | | | | | bmcweb fails when attempting to login with a Content header of application/json; charset=utf8. This is because of an exact string compare. This commit changes the check to only check the begining of the string, and adds some logging to make it more clear when we hit this in the future. Signed-off-by: Ed Tanous <ed.tanous@intel.com> Change-Id: I972a80c174a18295205340271b781c9d6693ee17
* Redfish(Network): IPV4 DHCP ipaddreses dont show gateway when in DHCP modeRavi Teja2019-08-011-2/+3
| | | | | | | | | Tested by: configuring DHCP, GET https://${BMC_IP}/redfish/v1/Managers/bmc/EthernetInterfaces/eth0 Signed-off-by: Ravi Teja <raviteja28031990@gmail.com> Change-Id: Ic7067db41fbb8327ef55cc7552f9153d1ecfb63a
* Add power restore policy applied messageJason M. Bills2019-07-301-0/+10
| | | | | | | | | Tested: Checked '/redfish/v1/Registries/OpenBMC/OpenBMC' and confirmed that the message is listed. Change-Id: I2ecc00dca46f51cae73db71167cba04c9a7be746 Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Add SetPointOffset To RefishJames Feist2019-07-303-6/+87
| | | | | | | | | | | | | | | | | | | | | | | | | This allows adding a threshold as a setpoint offset so that dynamic thresholds can be used to modify a setpoint. Tested: Get and Patch worked { "Oem": { "OpenBmc": { "Fan": { "PidControllers": { "CPU1_DIMM_ABC": { "SetPointOffset": "UpperThresholdCritical" } } } } } } Change-Id: If515971778a8041aba0ab51da87ec5b29ebc359d Signed-off-by: James Feist <james.feist@linux.intel.com>
* redfish-doc: Add details on EventLog implementationsAndrew Geissler2019-07-301-0/+36
| | | | | | | | | | Was struggling a bit reviewing the code and options in the LogServices area so wrote this up quickly. The main goal being to give a brief overview and link to some documentation to help with reviewing the options. Change-Id: I337490157ffdb188be812031311694f6cb83b8fa Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
* Redfish:Support to Delete a single event logChicago Duan2019-07-301-0/+41
| | | | | | | | | | | | | | | Tested:Use redfish to delete a single event log Before: curl -k -H "X-Auth-Token: $bmc_token" -X DELETE https://${bmc}/redfish/v1/Systems/system/LogServices/EventLog/Entries/2 -d '{"[]"}' Method Not Allowed After: curl -k -H "X-Auth-Token: $bmc_token" -X DELETE https://${bmc}/redfish/v1/Systems/system/LogServices/EventLog/Entries/2 -d '{"[]"}' No error response,and the entry 2 is deleted. Signed-off-by: Chicago Duan <duanzhijia01@inspur.com> Change-Id: I31e4470d73b72012b8727d466530202e2609000d
* Add ManagerInChassis link in Managers/bmcJason M. Bills2019-07-261-0/+2
| | | | | | | | | | | | | Tested: "Links": { "ManagerInChassis": { "@odata.id": "/redfish/v1/Chassis/R2000_Chassis" } } Passed the Redfish Service Validator. Change-Id: I8f57a9a2aca0878c44ecdefc613c9cfecbdc130c Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Add message entry for IPMI watchdog eventYong Li2019-07-251-0/+15
| | | | | | | | | | | | | | | | | | | | | | Log the IPMI watchdog event into redfish. Tested: Set a hard reset watchdog: ipmitool raw 0x06 0x24 0x5 0x1 0x0 0x0 0x64 0x00 Start the timer: ipmitool mc watchdog reset Check the below log message in https://$bmcip/redfish/v1/Systems/system/LogServices/EventLog/Entries "Message": "Host Watchdog Event: Hard Reset – System reset due to Watchdog timeout", "MessageArgs": [ "Hard Reset – System reset due to Watchdog timeout" ], "MessageId": "OpenBMC.0.1.IPMIWatchdog", Signed-off-by: Yong Li <yong.b.li@linux.intel.com> Change-Id: I652faf3b92489b2dd3216eb0cbaaf375e643c749
* Fix Error on Missing interfaceJames Feist2019-07-191-1/+1
| | | | | | | | | | Missing interface != 500 error, just means less data we can show. Tested: No 500 error on systems with missing interface Change-Id: Ifaecd67f8f4f6faed26c7a24ab79dfbd82462291 Signed-off-by: James Feist <james.feist@linux.intel.com>
* Redfish: Raise resource not found (404) if path does not existMarri Devender Rao2019-07-181-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During replace/querying for certificates, if the path specified does not exist InternalError is thrown, the same is modified to throw ResourceNotFound error. Fixes: https://github.com/openbmc/bmcweb/issues/88 Tested: 1) Resource not found error is thrown during replace certificate 2) Resource not found error is thrown during querying for certificate. bash-4.2$ curl -k -H "X-Auth-Token: $bmc_token" -X GET https://${bmc}/redfish/v1/AccountService/LDAP/Certificates/1 { "error": { "@Message.ExtendedInfo": [ { "@odata.type": "/redfish/v1/$metadata#Message.v1_0_0.Message", "Message": "The requested resource of type LDAP Certificate named 1 was not found.", "MessageArgs": [ "LDAP Certificate", "1" ], "MessageId": "Base.1.4.0.ResourceNotFound", "Resolution": "Provide a valid resource identifier and resubmit the request.", "Severity": "Critical" } ], "code": "Base.1.4.0.ResourceNotFound", "message": "The requested resource of type LDAP Certificate named 1 was not found." } } bash-4.2$ curl -c cjar -b cjar -k -H "X-Auth-Token: $bmc_token" -X POST https://${bmc}/redfish/v1/CertificateService/Actions/CertificateService.ReplaceCertificate/ -d @data_https.json { "error": { "@Message.ExtendedInfo": [ { "@odata.type": "/redfish/v1/$metadata#Message.v1_0_0.Message", "Message": "The requested resource of type HTTPS certificate named 2 was not found.", "MessageArgs": [ "HTTPS certificate", "2" ], "MessageId": "Base.1.4.0.ResourceNotFound", "Resolution": "Provide a valid resource identifier and resubmit the request.", "Severity": "Critical" } ], "code": "Base.1.4.0.ResourceNotFound", "message": "The requested resource of type HTTPS certificate named 2 was not found." } } Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com> Change-Id: I88b90cbca88fd5a23929f7e7e0d4e32948d9713b
* Change Name of PSU Event LogCheng C Yang2019-07-171-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Originally PSU Event Log use PSU number as the parameter, change to PSU name as the parameter. Tested: Plug out AC cable on PSU2, we can see below in Redfish Log Entries. { "@odata.context": "/redfish/v1/$metadata#LogEntry.LogEntry", data.context": "/redfish/v1/$metadata#LogEntry.LogEntry", "@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/ Entries/#1562158096", "@odata.type": "#LogEntry.v1_4_0.LogEntry", "Created": "2019-07-03T12:48:16+00:00", "EntryType": "Event", "Id": "1562158096", "Message": "Power supply PSU2 AC power lost.", "MessageArgs": [ "PSU2" ], "MessageId": "OpenBMC.0.1.PowerSupplyACLost", "Name": "System Event Log Entry", "Severity": "Critical" }, Signed-off-by: Cheng C Yang <cheng.c.yang@linux.intel.com> Change-Id: I2fc32606bef334c9c5db8b8883ea14bb1e653579
* redfish-doc: Move Redfish doc to its own fileAndrew Geissler2019-07-172-461/+462
| | | | | | | | Redfish support has been growing exponentially within bmcweb. Lets get a separate document for it all. Change-Id: Ibe895c7ab4bf4d2e1d51fce7136c0a6f8ca4119d Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
* Revert "Redfish: Add PATCH operation support for RemoteRoleMapping"Ed Tanous2019-07-171-252/+4
| | | | | | | | | | This reverts commit 2a21b9db6fcfe477f9ef31453df93e3f6c442a44. Reason for revert: Merged accidentally. Tested locally, and seems to work as designed. Needs fixed to match the comments below, then should be good to go. Change-Id: I95c19e47a09ca5afa343fd7590bc39f750cd81e0
* Redfish: Add PATCH operation support for RemoteRoleMappingNagaraju Goruganti2019-07-171-4/+252
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added PATCH operation support for RemoteRoleMapping property under LDAP/ActiveDirectory property in AccountService schema. 1. How to add the Role Mapping? PATCH {"ActiveDirectory":{"RemoteRoleMapping": [{"RemoteGroup": "Admingroup15","LocalRole": "User"},{"RemoteGroup": "Admingroup13", "LocalRole": "Administrator"},{"RemoteGroup": "Admingroup14", "LocalRole": "Operator"}]}} With the above PATCH request, all the above role mapping gets added. 2. How to delete a specific role mapping? After adding the above roles mapping, if user want to delete the second mapping which is ({"RemoteGroup": "Admingroup13", "LocalRole": "Administrator"}) Following PATCH request would be used. PATCH {"ActiveDirectory":{"RemoteRoleMapping": [{},null,{}]}} 3. How to update specific role mapping ? Let's take a case where user want to update the second role mapping PATCH {"ActiveDirectory":{"RemoteRoleMapping": [{},{"RemoteGroup":"Admingroup25","LocalRole": "User"},{}]}} or PATCH {"ActiveDirectory":{"RemoteRoleMapping": [{},{"RemoteGroup":"Admingroup25"},{}]}} and \ PATCH {"ActiveDirectory":{"RemoteRoleMapping": [{},{"LocalRole": "User"},{}]}} Tested: 1. Did a PATCH operation with below given Data: ' {"ActiveDirectory":{"RemoteRoleMapping": [{"RemoteGroup": "Admingroup215","LocalRole": "User"}, \ {"RemoteGroup": "Admingroup213","LocalRole":"Administrator"},{"RemoteGroup":"Admingroup214","LocalRole":"Operator"}]}}' 2. With GET got below given data: "RemoteRoleMapping": [ { "LocalRole": "Operator", "RemoteGroup": "Admingroup214" }, { "LocalRole": "Administrator", "RemoteGroup": "Admingroup213" }, { "LocalRole": "User", "RemoteGroup": "Admingroup215" } ], 3. Did a PATCH operation with below given Data: '{"ActiveDirectory":{"RemoteRoleMapping": [{},null,{}]}}' 4. With GET got below given data: "RemoteRoleMapping": [ { "LocalRole": "Operator", "RemoteGroup": "Admingroup214" }, { "LocalRole": "User", "RemoteGroup": "Admingroup215" } ], 5. Did a PATCH operation with below given Data: '{"ActiveDirectory":{"RemoteRoleMapping": [null,null]}}' 6. With GET got below given data: "RemoteRoleMapping": [] 7. Did a PATCH operation with below given Data: '{"ActiveDirectory":{"RemoteRoleMapping": [{"RemoteGroup": "Admingroup215","LocalRole": "User"}, \ {"RemoteGroup": "Admingroup213","LocalRole":"Administrator"},{"RemoteGroup":"Admingroup214","LocalRole":"Operator"}]}}' 8. With GET got below given data: "RemoteRoleMapping": [ { "LocalRole": "Administrator", "RemoteGroup": "Admingroup213" }, { "LocalRole": "Operator", "RemoteGroup": "Admingroup214" }, { "LocalRole": "User", "RemoteGroup": "Admingroup215" } ], 9. Did a PATCH operation with below given Data: '{"ActiveDirectory":{"RemoteRoleMapping": [{"RemoteGroup": "Admingroup25"},{},{}]}}' 10.With GET got below given data: "RemoteRoleMapping": [ { "LocalRole": "Administrator", "RemoteGroup": "Admingroup25" }, { "LocalRole": "Operator", "RemoteGroup": "Admingroup214" }, { "LocalRole": "User", "RemoteGroup": "Admingroup215" } ], 11. Did a PATCH operation with below given Data: '{"ActiveDirectory":{"RemoteRoleMapping": [{"LocalRole": "User"},{},{}]}}' 12.With GET got below given data: "RemoteRoleMapping": [ { "LocalRole": "User", "RemoteGroup": "Admingroup25" }, { "LocalRole": "Operator", "RemoteGroup": "Admingroup214" }, { "LocalRole": "User", "RemoteGroup": "Admingroup215" } ], 13. Did a PATCH operation with below given Data: '{"ActiveDirectory":{"RemoteRoleMapping": [{},{"RemoteGroup": "Admingroup26","LocalRole": "User"},{}]}}' 14.With GET got below given data: "RemoteRoleMapping": [ { "LocalRole": "User", "RemoteGroup": "Admingroup25" }, { "LocalRole": "User", "RemoteGroup": "Admingroup26" }, { "LocalRole": "User", "RemoteGroup": "Admingroup215" } ], Change-Id: Idc80cee94b8b55d036c2514d50c147a72ed4c7f2 Signed-off-by: Ratan Gupta <ratagupt@linux.vnet.ibm.com> Signed-off-by: Nagaraju Goruganti <ngorugan@in.ibm.com>
* Redfish: Populate the RemoteRoleMapping prop under AccountService schemaNagaraju Goruganti2019-07-171-150/+192
| | | | | | | | | | | | | | | | | | | | Get request on account service gets the RemoteRoleMapping info. Tested: 1.Ran redifsh validator and there are no errors 2.GET Request on AccountService would add below given info if RoleMapping data is configured on the system. GET "RemoteRoleMapping": [ { "LocalRole": "<configured role>", "RemoteUser": "<configured user>" }, ], Change-Id: Ie22f0bb520de795d31a9aba76a56fe88886ed50b Signed-off-by: Ratan Gupta <ratagupt@linux.vnet.ibm.com> Signed-off-by: Nagaraju Goruganti <ngorugan@in.ibm.com>
* Fix ProcessorSummary Count and StatusAlpana Kumari2019-07-171-24/+170
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ProcessorSummary State is always Disabled and Count shows 0. Fixed it by using correct interface to get these values. Doing GET on Interface xyz.openbmc_project.State.Decorator.OperationalStatus instead of xyz.openbmc_project.Inventory.Item.Cpu to get the State of CPU Tested: -- Ran GET request on the ComputerSystem node --when 2 CPUs are present and functional "ProcessorSummary": { "Count": 2, "Status": { "State": "Enabled" } }, --when 2 CPUs are present but only 1 is functional "ProcessorSummary": { "Count": 2, "Status": { "State": "Enabled" } }, --when only 1 CPU present and functional "ProcessorSummary": { "Count": 1, "Status": { "State": "Enabled" } }, --when only 1 CPU present and Not Functional "ProcessorSummary": { "Count": 1, "Status": { "State": "Disabled" } }, --Ran Redfish-Service-Validator ComputerSystem.v1_0_0.ProcessorSummary:Count value: 2 <class 'int'> has Type: Edm.Int64 Edm.Int64 is Optional permission OData.Permission/Read Success ComputerSystem.v1_0_0.ProcessorSummary:Status value: OrderedDict([('State', 'Enabled')]) <class 'collections.OrderedDict'> has Type: Resource.Status complex is Optional ***going into Complex Resource.Status:State value: Enabled <class 'str'> has Type: Resource.State enum is Optional permission OData.Permission/Read Success ProcessorSummary.Count PASS ProcessorSummary.Model Optional ProcessorSummary.Status complex ProcessorSummary.Status.State PASS Change-Id: I953db79da965b4493d7bd0005820945383b1377c Signed-off-by: Alpana Kumari <alpankum@in.ibm.com> Change-Id: I1d5f76adf2ed8a66d8b27aeca59e0d1a5730e6a8
* pcie: Don't return error if no PCIe presentAndrew Geissler2019-07-121-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Resolves openbmc/bmcweb#98 Tested: Before the fix: curl -k -H "X-Auth-Token: $TOKEN" -X GET https://${BMC_IP}/redfish/v1/Systems/system { "@odata.context": "/redfish/v1/$metadata#ComputerSystem.ComputerSystem", "@odata.id": "/redfish/v1/Systems/system", "@odata.type": "#ComputerSystem.v1_6_0.ComputerSystem", ... "SystemType": "Physical", "error": { "@Message.ExtendedInfo": [ { "@odata.type": "/redfish/v1/$metadata#Message.v1_0_0.Message", "Message": "The request failed due to an internal service error. The service is still operational.", "MessageArgs": [], "MessageId": "Base.1.4.0.InternalError", "Resolution": "Resubmit the request. If the problem persists, consider resetting the service.", "Severity": "Critical" } ], "code": "Base.1.4.0.InternalError", "message": "The request failed due to an internal service error. The service is still operational." } After the fix: curl -k -H "X-Auth-Token: $TOKEN" -X GET https://${BMC_IP}/redfish/v1/Systems/system { "@odata.context": "/redfish/v1/$metadata#ComputerSystem.ComputerSystem", "@odata.id": "/redfish/v1/Systems/system", "@odata.type": "#ComputerSystem.v1_6_0.ComputerSystem", ... "SerialNumber": "1318ECA", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Disabled" }, "SystemType": "Physical" } Change-Id: I0cc2a86decdea47164103c901ce7bd631f8adaf2 Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
* Ignored Trust-Chain related errors when validating certificateRamesh Iyyar2019-07-111-10/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, bmcweb is generating self signed certificate when uploaded certificate is not in trust-chain while validating that certificate. As per design direction, bmcweb and Certificate Manager should ignore trust chain related errors and same feature addressed in certificate manager. Reference change id from Certificate Manager: https://gerrit.openbmc-project.xyz/c/openbmc/phosphor-certificate-manager/+/13875 With this change, the user can upload self signed CA certificate without Root CA-Certificate in certificate store and bmcweb won't generate self signed certificate when uploaded certificate is not in trust-chain. Trust chain error info: X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY X509_V_ERR_CERT_UNTRUSTED X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE Change-Id: Ieedd602541d6d5284be3e22ffd5db3ee875065fe Signed-off-by: Ramesh Iyyar <rameshi1@in.ibm.com>
* Redfish(Authorization): Map the user role with the Redfish privilegesRatan Gupta2019-07-114-33/+64
| | | | | | | | | This commit gets the role of the user from the session object and map it with the redfish privileges and then allow/reject the asked operation depending on the userprivileges and the entity privileges. Change-Id: I40be06c28e80b47fe76891cacf863f8495bace88 Signed-off-by: Ratan Gupta <ratagupt@linux.vnet.ibm.com>
* Add Redfish PCIe informationJason M. Bills2019-07-113-0/+352
| | | | | | | | | | | | This adds the capability to get PCIe device information from D-Bus and display it in the appropriate Redfish PCIeDevice and PCIeFunction objects. Tested: Passed the Redfish validator for the new PCIeDevice and PCIeFunction objects. Change-Id: I06f3b0e7d283e48d2235b7d34f78f603b22de79f Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Included sdbusplus/bus/match.hpp to fix compilation errorRAJESWARAN THILLAIGOVINDAN2019-07-091-0/+1
| | | | | | | | | Tested: with this change, CI for the commit https://gerrit.openbmc-project.xyz/c/openbmc/bmcweb/+/20134 passes. Signed-off-by: RAJESWARAN THILLAIGOVINDAN <rajeswgo@in.ibm.com> Change-Id: I983494e4e42bb4cce31482918c01c9e81a51132e
* Addressed certificate read issueRamesh Iyyar2019-07-091-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | Certificate reading is failed if Key and Certificate in different order Git Issue ID: - https://github.com/openbmc/bmcweb/issues/91 Root Cause: In uploaded certificate the order is in CSR and then RSA, due to this certificate reading is failed when same file pointer are used for read key and certificate. Solution: Setting file pointer to point beginning of the file to avoid key and certificate order error and it will support both order. Tested By: - Uploaded the certificate by changing component order. curl -c cjar -b cjar -k -H "X-Auth-Token: $bmc_token" -H "Content-Type: application/octet-stream" -X POST -T cert.pem https://${bmc}/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates Change-Id: I6f6d41e7b8a7c2f7c5ce53c5d1bbdf69189119b2 Signed-off-by: Ramesh Iyyar <rameshi1@in.ibm.com>
* bmcweb implementation of NMI (soft reset) control codeLakshminarayana R. Kammath2019-07-091-1/+31
| | | | | | | | | | | | | | | Tested : Verified following 1) Redfish validator result is Negative 2) verified following command triggered NMI on host curl -k -H "X-Auth-Token: $bmc_token" -X POST https://9.5.180.47/redfish/v1/Systems/system/Actions/ComputerSystem.Reset -d '{"ResetType":"Nmi"}' Response : OK 2) Host rebooted and crash dump is collected Signed-off-by: Lakshminarayana R. Kammath <lkammath@in.ibm.com> Change-Id: I09efa1e3d94437c89afbe1a1b9d148cc4f577ebe
* Fix Redfish Validator Errors in EventLogGunnar Mills2019-07-091-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | /redfish/v1/Systems/system/LogServices/EventLog ERROR - LogService.v1_0_0.LogService:Actions : Could not get details on this property (This item should not be a List) ERROR - Actions: Item is present, but no schema found Before: curl -k https://${bmc}/redfish/v1/Systems/system/LogServices/EventLog/ { "@odata.context": "/redfish/v1/$metadata#LogService.LogService", "@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog", "@odata.type": "#LogService.v1_1_0.LogService", "Actions": [ { "#LogService.ClearLog": { "target": "/redfish/v1/Systems/system/LogServices/EventLog/Actions/LogService.ClearLog" } } ], After: curl -k https://${bmc}/redfish/v1/Systems/system/LogServices/EventLog/ { "@odata.context": "/redfish/v1/$metadata#LogService.LogService", "@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog", "@odata.type": "#LogService.v1_1_0.LogService", "Actions": { "#LogService.ClearLog": { "target": "/redfish/v1/Systems/system/LogServices/EventLog/Actions/LogService.ClearLog" } }, LogService.ClearLog currently does not work on master on Witherspoon, see https://github.com/openbmc/bmcweb/issues/97 Change-Id: Id2cea926b4f5248782c751f3da247c4dc5662cf3 Tested: No longer see the Errors. Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
* Add __FILE__ and __LINE__ to log printsJames Feist2019-07-091-7/+12
| | | | | | | | | | | | | | | | | | | | | Some error prints are nondescriptive and this helps tell where the error happened Tested: Compiled with debug and saw error prints with filename and line number. Jul 08 18:52:26 intel-obmc bmcweb[1348]: (2019-07-08 18:52:26) [INFO "webserver_main.cpp":95] bmcweb (Jul 8 2019: 19:24:43) Jul 08 18:52:26 intel-obmc bmcweb[1348]: (2019-07-08 18:52:26) [INFO "webserver_main.cpp":34] attempting systemd socket activation Jul 08 18:52:26 intel-obmc bmcweb[1348]: (2019-07-08 18:52:26) [INFO "webserver_main.cpp":38] Starting webserver on socket handle 3 Jul 08 18:52:28 intel-obmc bmcweb[1348]: (2019-07-08 18:52:28) [INFO "http_server.h":182] Building SSL Context file="/etc/ssl/certs/https/server.pem" Jul 08 18:52:28 intel-obmc bmcweb[1348]: Checking certs in file /etc/ssl/certs/https/server.pem Jul 08 18:52:28 intel-obmc bmcweb[1348]: Found an EC key Jul 08 18:52:28 intel-obmc bmcweb[1348]: (2019-07-08 18:52:28) [INFO "app.h":186] app::ssl context use_count=2 Jul 08 18:52:28 intel-obmc bmcweb[1348]: (2019-07-08 18:52:28) [INFO "http_server.h":157] iBMC server is running, local endpoint [::]:443 Jul 08 18:52:28 intel-obmc bmcweb[1348]: (2019-07-08 18:52:28) [DEBUG "http_connection.h":267] 0xb43b48 Connection open, total 1 Change-Id: I9838d1863bcdd2d8401d3237729a8e7f134bfd07 Signed-off-by: James Feist <james.feist@linux.intel.com>
* Redfish(Authorization): Add the privilege in the user session object.Ratan Gupta2019-07-092-6/+262
| | | | | | | | | This commit fetches the user privilege during creation of the session by making D-bus call and add the privilege in the user session object. Change-Id: I0e9da8a52df00fc753b13101066ce6d0be9e2ce3 Signed-off-by: Ratan Gupta <ratagupt@linux.vnet.ibm.com>
* Return active bmc fw versionAndrew Geissler2019-07-081-43/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | Utilize the new utility interface to return the actively running BMC firmware image. The current code just returns the first instance it finds which is incorrect. Tested: cat /etc/os-release ID="openbmc-phosphor" NAME="Phosphor OpenBMC (Phosphor OpenBMC Project Reference Distro)" VERSION="2.7.0-dev" VERSION_ID="2.7.0-dev-1010-gb417d47" Before Change: curl -k -H "X-Auth-Token: $TOKEN" -X GET https://${BMC_IP}/redfish/v1/Managers/bmc | grep Firmware "FirmwareVersion": "2.7.0-dev-999-gfbdb73f" After Change: curl -k -H "X-Auth-Token: $TOKEN" -X GET https://${BMC_IP}/redfish/v1/Managers/bmc | grep Firmware "FirmwareVersion": "2.7.0-dev-1010-gb417d47", Resolves openbmc/bmcweb#38 Change-Id: I50388c7adfaed8938e3a927becbebd801f0f7673 Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
* Move PowerLimit to correct locationGunnar Mills2019-07-082-6/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | See the following Redfish Validator errors and warning: /redfish/v1/Chassis/chassis/Power ERROR - PowerLimit not defined in schema Power.v1_5_2 (check version, spelling and casing) /redfish/v1/Chassis/chassis/Power#/PowerControl/ ERROR - Decoded object no longer a dictionary /redfish/v1/Chassis/chassis/Power ERROR - @odata.id of ReferenceableMember does not properly resolve: /redfish/v1/Chassis/chassis/Power#/PowerControl/ WARNING - No @odata.type present, assuming highest type Power.v1_0_0.PowerControl Power.v1_4_0.PowerControl If you look at the specification/mockups, PowerLimit is under PowerControl. From the https://redfish.dmtf.org/redfish/mockups/v1/893 mockup: PowerControl": [ { "@odata.id": "/redfish/v1/Chassis/1U/Power#/PowerControl/0", "MemberId": "0", ... "PowerAvailableWatts": 0, "PowerCapacityWatts": 800, ... "PowerLimit": { "LimitInWatts": 500, "LimitException": "LogEventOnly", "CorrectionInMs": 50 } , ... } ], Added an odata.type and fixed the odata.id for PowerControl. Put all power control sensors under the same PowerControl like we do for PowerSupplies. Tested: No longer see the errors. If no total_power (happens when a Open Power system is off): curl -k https://${bmc}/redfish/v1/Chassis/chassis/Power ... "PowerControl": [ { "@odata.id": "/redfish/v1/Chassis/chassis/Power#/PowerControl/0", "@odata.type": "#Power.v1_0_0.PowerControl", "MemberId": "0", "Name": "Chassis Power Control", "PowerLimit": { "LimitInWatts": null } } ], "Redundancy": [], ... curl -k https://${bmc}/redfish/v1/Chassis/chassis/Power/ { "PowerControl": [ { "@odata.id": "/redfish/v1/Chassis/chassis/Power#/PowerControl/0", "@odata.type": "#Power.v1_0_0.PowerControl", "MemberId": "0", "Name": "Chassis Power Control", "PowerConsumedWatts": 232.0, "PowerLimit": { "LimitInWatts": null }, "Status": { "Health": "OK", "State": "Enabled" Change-Id: I8ca47bd6c7dedf5d0685886e2e45e6f964f69060 Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
* bmcweb: Clear up event log entry class namesAnthony Wilson2019-07-032-5/+6
| | | | | | | | | | | | | It wasn't immediately clear what some of the classes did without digging through the implementation. This should clear up any confusion between the Journal and DBus implementations of the event log entry classes. Tested: Verified changes were present in both implementations of event log enttry. Change-Id: Id0d6bad5c73feb93608ac1ad457235a1d31fe018 Signed-off-by: Anthony Wilson <wilsonan@us.ibm.com>
* redfish: Give DBus event logging its own classesAnthony Wilson2019-07-032-17/+49
| | | | | | | | | | | | Since the DBus implementation of event logging is completely different than the journal implementation, moved it to its own class to be consistent. Tested: Verified both implementations work the same as before the class split. Change-Id: I95e3b837f9d99b78034695545ab5791386d94a13 Signed-off-by: Anthony Wilson <wilsonan@us.ibm.com>
* Redfish(Network): Add support for IPv4StaticAddressesRavi Teja2019-07-031-42/+97
| | | | | | | | | | | | | | | | | Added GET and PATCH support for IPv4StaticAddresses and modified IPv4Addresses as read-only property Tested by: GET PATCH -D patch.txt -d '{"IPv4StaticAddresses": [{},{},{"Address": "10.7.8.7","SubnetMask": "255.255.0.0","Gateway":"10.7.8.1"}]}' PATCH -D patch.txt -d '{"IPv4StaticAddresses": [{},{"Address": "10.7.7.8","SubnetMask": "255.255.0.0","Gateway":"10.7.7.1"}]}' PATCH -D patch.txt -d '{"IPv4StaticAddresses": [null,{},{"Address": "10.7.7.9","SubnetMask": "255.255.0.0","Gateway":"10.7.7.1"}]}']}' PATCH -D patch.txt -d '{"IPv4StaticAddresses": [{},{"Address": "10.8.8.9"}]}' Tested with validator and no errors. Signed-off-by: Ravi Teja <raviteja28031990@gmail.com> Change-Id: I580787933f1d93d0734e32f71ac9fc80dc108247
* Redfish: Add support to upload/replace/view LDAP CertificateMarri Devender Rao2019-07-033-290/+327
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implements CertificateCollection schema to upload/list existing LDAP certificates Implements Certificate schema to view existing LDAP certificate Implements ReplaceCertificate action to replace existing LDAP certificate. Tested: 1. Tested schema with validator and no issues 2. Privilege map for certificate service is not yet pubished 3. POST on /redfish/v1/AccountService/LDAP/Certificates curl -c cjar -b cjar -k -H "X-Auth-Token: $bmc_token" -H "Content-Type: application/octet-stream" -X POST -T testcert.pem https://${bmc}/redfish/v1/AccountServie/LDAP/Certificates { "@odata.context": "/redfish/v1/$metadata#Certificate.Certificate", "@odata.id": "/redfish/v1/AccountService/LDAP/Certificates/1", "@odata.type": "#Certificate.v1_0_0.Certificate", "CertificateString": "-----BEGIN CERTIFICATE---------END CERTIFICATE-----\n", "Description": "LDAP Certificate", "Id": "1", "Issuer": { "City": "SomeCity", "CommonName": "www.company.com", "Country": "US", "Organization": "MyCompany", "State": "VA", "organizationUnit": "MyDivision" }, "KeyUsage": [ "KeyAgreement", "ServerAuthentication" ], "Name": "LDAP Certificate", "Subject": { "City": "SomeCity", "CommonName": "www.company.com", "Organization": "MyCompany", "State": "VA", "organizationUnit": "MyDivision" }, "ValidNotAfter": "2029-03-14T02:11:02+00:00", "ValidNotBefore": "2019-03-17T02:11:02+00:00" } 4. GET on /redfish/v1/AccountService/LDAP/Certificates/ { "@odata.context": "/redfish/v1/$metadata#CertificateCollection.CertificateCollection", "@odata.id": "/redfish/v1/AccountService/LDAP/Certificates", "@odata.type": "#CertificateCollection.CertificatesCollection", "Description": "A Collection of LDAP certificate instances", "Members": [ { "@odata.id": "/redfish/v1/AccountService/LDAP/Certificates/1" } ], "Members@odata.count": 1, "Name": "LDAP Certificate Collection" } 5.GET on /redfish/v1/CertificateService/CertificateLocations/ { "@odata.context": "/redfish/v1/$metadata#CertificateLocations.CertificateLocations", "@odata.id": "/redfish/v1/CertificateService/CertificateLocations", "@odata.type": "#CertificateLocations.v1_0_0.CertificateLocations", "Description": "Defines a resource that an administrator can use in order to locate all certificates installed on a given service", "Id": "CertificateLocations", "Links": { "Certificates": [ { "@odata.id": "/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/1" }, { "@odata.id": "/redfish/v1/AccountService/LDAP/Certificates/1" } ], "Certificates@odata.count": 2 }, "Name": "Certificate Locations" } 6.GET on /redfish/v1/AccountService/LDAP/Certificates/1 { "@odata.context": "/redfish/v1/$metadata#Certificate.Certificate", "@odata.id": "/redfish/v1/AccountService/LDAP/Certificates/1", "@odata.type": "#Certificate.v1_0_0.Certificate", "CertificateString": "-----BEGINCERTIFICATE-----\n ... -----ENDCERTIFICATE-----\n", "CertificateType": "PEM", "Description": "LDAP Certificate", "Id": "1", "Issuer": { "CommonName": "localhost", "Organization": "openbmc-project.xyz" }, "KeyUsage": [], "Name": "LDAP Certificate", "Subject": { "CommonName": "localhost" } 7.Replace certificate POST on /redfish/v1/CertificateService/Actions/CertificateService.ReplaceCertificate/ { "@odata.context": "/redfish/v1/$metadata#Certificate.Certificate", "@odata.id": "/redfish/v1/AccountService/LDAP/Certificates/1", "@odata.type": "#Certificate.v1_0_0.Certificate", ... } 8.GET on AccountService curl -k -H "X-Auth-Token: $bmc_token" -X GET https://${bmc}/redfish/v1/AccountService { "@odata.context": "/redfish/v1/$metadata#AccountService.AccountService", "@odata.id": "/redfish/v1/AccountService", "@odata.type": "#AccountService.v1_4_0.AccountService", "Id": "AccountService", "LDAP": { "AccountProviderType": "LDAPService", "Certificates": { "@odata.id": "/redfish/v1/AccountService/LDAP/Certificates" }, Change-Id: I056a4cea8b0377e156b660984857cdfadbfe1b2c Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com>
* Return error on invalid swIdAndrew Geissler2019-07-031-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Tested: Before: curl -k -H "X-Auth-Token: $TOKEN" -X GET https://${BMC_IP}/redfish/v1/UpdateService/FirmwareInventory/invalidSwId { "@odata.context": "/redfish/v1/$metadata#SoftwareInventory.SoftwareInventory", "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/invalidSwId", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": false } After: curl -k -H "X-Auth-Token: $TOKEN" -X GET https://${BMC_IP}/redfish/v1/UpdateService/FirmwareInventory/invalidSwId { "@odata.context": "/redfish/v1/$metadata#SoftwareInventory.SoftwareInventory", "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/invalidSwId", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": false, "error": { "@Message.ExtendedInfo": [ { "@odata.type": "/redfish/v1/$metadata#Message.v1_0_0.Message", "Message": "The resource at the URI /redfish/v1/UpdateService/FirmwareInventory/invalidSwId was not found.", "MessageArgs": [ "/redfish/v1/UpdateService/FirmwareInventory/invalidSwId" ], "MessageId": "Base.1.4.0.ResourceMissingAtURI", "Resolution": "Place a valid resource at the URI or correct the URI and resubmit the request.", "Severity": "Critical" } ], "code": "Base.1.4.0.ResourceMissingAtURI", "message": "The resource at the URI /redfish/v1/UpdateService/FirmwareInventory/invalidSwId was not found." } } Change-Id: I4dbf535301d55ffff8f2a652d112e08db040d1b1 Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
* fwstatus: Enhance state of firmware inventoryAndrew Geissler2019-07-022-53/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently there is no mechanism for a user to know the status of their firmware update over redfish. The primary focus of this commit is to provide status of a firmware update. There is still some ongoing discussion on using the Health field to better explain error conditions. A forum post with DMTF has been opened for clarification in this area but this commit does get things going in the right direction. It provides a user with the status of their update and gives them a simple Enabled/Disabled to know if it worked. Tested: - Firmware update in progress curl -k -H "X-Auth-Token: $TOKEN" -X GET https://${BMC_IP}/redfish/v1/UpdateService/FirmwareInventory/92e57fc7 { "@odata.context": "/redfish/v1/$metadata#SoftwareInventory.SoftwareInventory", "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/92e57fc7", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "BMC update", "Id": "92e57fc7", "Members@odata.count": 1, "Name": "Software Inventory", "RelatedItem": [ { "@odata.id": "/redfish/v1/Managers/bmc" } ], "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Updating" }, "Updateable": false, "Version": "2.7.0-dev-926-g79ca37b3d" } - Firmware update complete curl -k -H "X-Auth-Token: $TOKEN" -X GET https://${BMC_IP}/redfish/v1/UpdateService/FirmwareInventory/92e57fc7 { "@odata.context": "/redfish/v1/$metadata#SoftwareInventory.SoftwareInventory", "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/92e57fc7", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "BMC update", "Id": "92e57fc7", "Members@odata.count": 1, "Name": "Software Inventory", "RelatedItem": [ { "@odata.id": "/redfish/v1/Managers/bmc" } ], "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": false, "Version": "2.7.0-dev-926-g79ca37b3d" } - Firmware update failed (xyz.openbmc_project.Software.Activation.Activations.Failed) curl -k -H "X-Auth-Token: $TOKEN" -X GET https://${BMC_IP}/redfish/v1/UpdateService/FirmwareInventory/3d02a163 { "@odata.context": "/redfish/v1/$metadata#SoftwareInventory.SoftwareInventory", "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/3d02a163", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "BMC update", "Id": "3d02a163", "Members@odata.count": 1, "Name": "Software Inventory", "RelatedItem": [ { "@odata.id": "/redfish/v1/Managers/bmc" } ], "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Disabled" }, "Updateable": false, "Version": "2.7.0-dev-940-geb79ec582" } - Firmware update status of Host curl -k -H "X-Auth-Token: $TOKEN" -X GET https://${BMC_IP}/redfish/v1/UpdateService/FirmwareInventory/9a8028ec { "@odata.context": "/redfish/v1/$metadata#SoftwareInventory.SoftwareInventory", "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/9a8028ec", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Host update", "Id": "9a8028ec", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": false, "Version": "IBM-witherspoon-OP9-v2.0.14-2.6" } Redfish validator had no additional errors Change-Id: I26273227448cab1a20a20a7edd9d85d223727bb8 Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
* Fix variable name case style for CI warningJason M. Bills2019-06-281-10/+10
| | | | | | | | CI gives a warning for invalid case style in variable names. This fixes the warnings that show up so far. Change-Id: I2a8706d3283bdc685dc026391de715accea7b86e Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Fix initialier_list issuesEd Tanous2019-06-273-6/+5
| | | | | | | | | | | This is a warning that the clang analyser seems to pop up with. For whatever reason, GCC is just fine with it. Tested: Not yet tested. Change-Id: I5d665e23011806f51d1ef4c5b1e8b887bdb456eb Signed-off-by: Ed Tanous <ed.tanous@intel.com>
* Refish:Memory - Populate missing propertiesManojkiran Eda2019-06-271-0/+12
| | | | | | | | | | | | | | | | | | With this commit the GET request on any dimm object returns few additional properties.The following are the properties that are added as a part of this commit. - PartNumber - SerialNumber - Manufacturer Tested by: 1. Redfish-Service-Validator - Pass 2. GET https://<ip:port>/redfish/v1/Systems/system/Memory/dimm<number> Change-Id: I75ad8188e53dc8e08add6f5c7bebb6a5056afd35 Signed-off-by: Manojkiran Eda <manojkiran.eda@gmail.com>
* Fix parsing of Redfish messages with empty MessageArgsJason M. Bills2019-06-261-12/+22
| | | | | | | | | | | | | | | | | | | The current parsing shows an empty string as a MessageArg for messages that have no arguments. This fixes it to correctly display an empty MessageArgs. It also fixes a parsing range check error for the case when a message without MessageArgs is not terminated with a comma. Tested: Verified that messages show without args show in Redfish with an empty MessageArgs. Injected a message without a terminating comma and confirmed that it is correctly parsed and displayed. Change-Id: I896554941d2d239afa889d41edef1f1f71b59906 Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Health / Rollup SupportJames Feist2019-06-264-1/+248
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Look for associations for inventory and compare the inventory warning / critical and global warning / critical to get HealthRollup and Health respectively. Tested: Used sensor override to set BMC temp to Upper critical and saw: { "@odata.context": "/redfish/v1/$metadata#Chassis.Chassis", "@odata.id": "/redfish/v1/Chassis/WFP_Baseboard", "@odata.type": "#Chassis.v1_4_0.Chassis", "ChassisType": "RackMount", "Id": "WFP_Baseboard", "Links": { "ComputerSystems": [ { "@odata.id": "/redfish/v1/Systems/system" } ], "ManagedBy": [ { "@odata.id": "/redfish/v1/Managers/bmc" } ] }, "Manufacturer": "Intel Corporation", "Model": "S2600WFT", "Name": "WFP_Baseboard", "PartNumber": "123456789", "Power": { "@odata.id": "/redfish/v1/Chassis/WFP_Baseboard/Power" }, "PowerState": "Off", "SerialNumber": "123454321", "Status": { "Health": "Warning", "HealthRollup": "Critical", "State": "StandbyOffline" }, "Thermal": { "@odata.id": "/redfish/v1/Chassis/WFP_Baseboard/Thermal" } } Change-Id: Idd9e832db18bb4769f1452fe243d68339a6f844d Signed-off-by: James Feist <james.feist@linux.intel.com>
* Fix redudancy for association changeJames Feist2019-06-261-1/+1
| | | | | | | | | | | s/inventory/chassis according to https://gerrit.openbmc-project.xyz/c/openbmc/docs/+/22976 Tested: Redundancy still worked with according change in sensor repo Change-Id: Id0e517e09908a44fa983a6934b8c4c39d5db4dd6 Signed-off-by: James Feist <james.feist@linux.intel.com>
* Redfish: Check inventory item for sensor statusShawn McCarney2019-06-261-34/+501
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added support to find the inventory item (if any) associated with a sensor. Checks whether the inventory item is not present or not functional. If so, updates the sensor status. Uses the standard D-Bus Inventory.Item and OperationalStatus interfaces to obtain the Present and Functional properties for the inventory item. These checks are in addition to the sensor threshold checks. The two approaches are complementary. Some functional problems and missing hardware are not detectable via thresholds depending on how the system is implemented. Uses an ObjectMapper association named "inventory" to find the inventory item associated with a sensor. For example: /xyz/openbmc_project/sensors/power/ps0_input_power/inventory -> /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0 This support could be used in the future to obtain VPD data such as Model and PartNumber for PowerSupply sensors. VPD data is associated with the inventory item on D-Bus. Also changed the association name used to find all sensors in a chassis from "sensors" to "all_sensors". Test Plan: https://gist.github.com/smccarney/accc500b58fed80b711c65520cc7aafc Tested: Verified Power and Thermal output on a Witherspoon system. Tested where inventory item associated with sensor was present/not present and function/not functional. Ran Redfish Service Validator. Change-Id: Ibcdc515eb6b52ef43f05f98f36b8f0849fe1f25b Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
* simpleupdate: Basic support of SimpleUpdateAndrew Geissler2019-06-263-11/+181
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is TFTP only since that is all the OpenBMC back end currently supports Design Doc Ref: https://gerrit.openbmc-project.xyz/c/openbmc/docs/+/20700 Tested: 1) Verified BMC image update via new SimpleUpdate interface worked curl -k -H "X-Auth-Token: $TOKEN" -d '{"ImageURI":"XXX.XX.X.X/obmc-phosphor-image-witherspoon.ubi.mtd.tar","TransferProtocol":"TFTP"}' -X POST https://${BMC_IP}/redfish/v1/UpdateService/Actions/UpdateService.SimpleUpdate { "@Message.ExtendedInfo": [ { "@odata.type": "/redfish/v1/$metadata#Message.v1_0_0.Message", "Message": "Successfully Completed Request", "MessageArgs": [], "MessageId": "Base.1.4.0.Success", "Resolution": "None", "Severity": "OK" } ] } 2) Verified encoding the protocol in ImageURI worked curl -k -H "X-Auth-Token: $TOKEN" -X POST https://${BMC_IP}/redfish/v1/UpdateService/Actions/UpdateService.SimpleUpdate -d '{"ImageURI":"tftp://${TFTP_IP}/obmc-phosphor-image-witherspoon.ubi.mtd.tar"}' { "@Message.ExtendedInfo": [ { "@odata.type": "/redfish/v1/$metadata#Message.v1_0_0.Message", "Message": "Successfully Completed Request", "MessageArgs": [], "MessageId": "Base.1.4.0.Success", "Resolution": "None", "Severity": "OK" } ] } Jun 12 20:52:20 witherspoon bmcweb[2470]: (2019-06-12 20:52:20) [DEBUG ] Enter UpdateService.SimpleUpdate doPost Jun 12 20:52:20 witherspoon bmcweb[2470]: (2019-06-12 20:52:20) [DEBUG ] Encoded transfer protocol tftp Jun 12 20:52:20 witherspoon bmcweb[2470]: (2019-06-12 20:52:20) [DEBUG ] Adjusted imageUri ${BMC_IP}/obmc-phosphor-image-witherspoon.ubi.mtd.tar Jun 12 20:52:20 witherspoon bmcweb[2470]: (2019-06-12 20:52:20) [DEBUG ] Server: ${TFTP_IP} File: obmc-phosphor-image-witherspoon.ubi.mtd.tar Jun 12 20:52:20 witherspoon bmcweb[2470]: (2019-06-12 20:52:20) [DEBUG ] Exit UpdateService.SimpleUpdate doPost 3) Verified if no transfer protocol, error returned curl -k -H "X-Auth-Token: $TOKEN" -X POST https://${BMC_IP}/redfish/v1/UpdateService/Actions/UpdateService.SimpleUpdate -d '{"ImageURI":”${TFTP_IP}/obmc-phosphor-image-witherspoon.ubi.mtd.tar"}' { "error": { "@Message.ExtendedInfo": [ { "@odata.type": "/redfish/v1/$metadata#Message.v1_0_0.Message", "Message": "The value ${TFTP_IP}/obmc-phosphor-image-witherspoon.ubi.mtd.tar for the parameter ImageURI in the action UpdateService.SimpleUpdate is of a different type than the parameter can accept.", "MessageArgs": [ “${TFTP_IP}/obmc-phosphor-image-witherspoon.ubi.mtd.tar", "ImageURI", "UpdateService.SimpleUpdate" ], "MessageId": "Base.1.4.0.ActionParameterValueTypeError", "Resolution": "Correct the value for the parameter in the request body and resubmit the request if the operation failed.", "Severity": "Warning" } ], "code": "Base.1.4.0.ActionParameterValueTypeError", "message": "The value ${TFTP_IP}/obmc-phosphor-image-witherspoon.ubi.mtd.tar for the parameter ImageURI in the action UpdateService.SimpleUpdate is of a different type than the parameter can accept." } } 4) Verified no new error in Redfish Validator 5) Verified error return when parameter missing: curl -k -H "X-Auth-Token: $TOKEN" -d '{"TransferProtocol":"TFTP"}' -X POST https://${BMC_IP}/redfish/v1/UpdateService/Actions/UpdateService.SimpleUpdate { "ImageURI@Message.ExtendedInfo": [ { "@odata.type": "/redfish/v1/$metadata#Message.v1_0_0.Message", "Message": "The property ImageURI is a required property and must be included in the request.", "MessageArgs": [ "ImageURI" ], "MessageId": "Base.1.4.0.PropertyMissing", "Resolution": "Ensure that the property is in the request body and has a valid value and resubmit the request if the operation failed.", "Severity": "Warning" } ] } 6) Verified that by default, the new Action is not available Change-Id: I67ea91e181380e6da7ff63a37f02408a318602b7 Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
* Systems: Add AssetTag SupportJames Feist2019-06-241-3/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can get this item from the AssetTag interface. Tested: { "@odata.context": "/redfish/v1/$metadata#ComputerSystem.ComputerSystem", "@odata.id": "/redfish/v1/Systems/system", "@odata.type": "#ComputerSystem.v1_6_0.ComputerSystem", "Actions": { "#ComputerSystem.Reset": { "ResetType@Redfish.AllowableValues": [ "On", "ForceOff", "ForceOn", "ForceRestart", "GracefulRestart", "GracefulShutdown", "PowerCycle" ], "target": "/redfish/v1/Systems/system/Actions/ComputerSystem.Reset" } }, "AssetTag": "abc", "Description": "Computer System", "Id": null, .... Change-Id: I1c92b001cc08bd0661368d28d9fb8ae56c122d1e Signed-off-by: James Feist <james.feist@linux.intel.com>
* Redfish: Implement PATCH operation for ActiveDirectory property in ↵Ratan Gupta2019-06-241-11/+30
| | | | | | | | | | | | | | | | | | | | | | | | | AccountService With this commit PATCH operation on the ActiveDirectory property would configure the ActiveDirectory on the OpenBMC. If one of the config is enabled, user needs to disable the other config. eg: If LDAP is enabled and user tries to enable the Active Diretory user will get the error and user need to disable the LDAP first. TestedBy: Enable the LDAP service: PASS Login through LDAP credentials : PASS Enable the AD service throws error as LDAP is already enabled: PASS Disable the LDAP service : PASS Enable the AD service : PASS Login through AD credentials: PASS Login through LDAP credentials, should not be allowed: PASS Detailed test results are at following location. https://pastebin.com/ibX5nyAc Change-Id: I36d17757db1542604dbf5215728ac30f4e91f610 Signed-off-by: Ratan Gupta <ratagupt@linux.vnet.ibm.com>
* Redfish: Populate the ActiveDirectory property in AccountService schemaRatan Gupta2019-06-241-134/+180
| | | | | | | | | | | | | | | | | | With this commit get request on account service gets the LDAP/AD configuration. TestedBy: 1) Run the redfish - validator => when there is no configuration => After LDAP Configuration. => After ActiveDirectory Configuration. 2) GET request through redfish /redfish/v1/AccountService Gets both LDAP and ActiveDirectory properties. Detailed test results are at following location. https://pastebin.com/ibX5nyAc Change-Id: I0d6cdc2039eecffe96b6a27f3d65905ceb92d9b9 Signed-off-by: Ratan Gupta <ratagupt@linux.vnet.ibm.com>
* REST: method call: return D-Bus error descMatt Spinler2019-06-201-9/+25
| | | | | | | | | | | | | | | | | | | | When invoking a D-Bus method call via the 'action' URL, return the error that came back from the D-Bus call as opposed to just hardcoding one. Tested: A POST on /xyz/openbmc_project/dump/action/CreateDump when no more dumps can be created now returns: { "data": { "description": "xyz.openbmc_project.Dump.Create.Error.QuotaExceeded" }, "message": "Dump not captured due to a cap.", "status": "error" } Change-Id: Ifd0c97f82ff05842fa0f36ef3bb1aaba42ad7d49 Signed-off-by: Matt Spinler <spinler@us.ibm.com>
* Response for insufficient privileges to 403Gunnar Mills2019-06-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Currently, if the user does not have sufficient privileges a 401 (Unauthorized) is returned. A 403 (Forbidden) should be returned instead. This change does this. The Web Interface forces the user to reauthenticate on a 401. https://github.com/openbmc/phosphor-webui/blob/e364faa0314c8c98a31260bf69df78a104b106a1/app/common/services/apiInterceptor.js#L50 Maybe not the best policy but a 401 roughly means "Not or incorrectly authenticated, please reauthenticate". A 403 roughly means "As this user you don't have permission". See https://stackoverflow.com/questions/3297048/403-forbidden-vs-401-unauthorized-http-responses and http://www.dirv.me/blog/2011/07/18/understanding-403-forbidden/index.html Tested: None. Change-Id: I07a89dc542002c6aeb66da96822fdb466528c383 Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
* Remove pulling BiosID for the system schemaEd Tanous2019-06-201-21/+0
| | | | | | | | | | | This is causing 500 errors on POWER platforms, given that (shocker) they don't have a BIOS! In practice, this isn't even the right way to grab the version information, we should be grabbing it over the software version interface https://github.com/openbmc/phosphor-dbus-interfaces /blob/master/xyz/openbmc_project/Software/Version.interface.yaml Signed-off-by: Ed Tanous <ed.tanous@intel.com> Change-Id: I45704b879a57d152c898594770e8d3729ad9e72e
OpenPOWER on IntegriCloud