summaryrefslogtreecommitdiffstats
path: root/redfish-core/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Update to Chassis 1.10 and add PCIeDeviceCollection supportJason M. Bills2019-10-293-33/+73
| | | | | | | | | | | | v1.10 of Chassis adds a PCIeDeviceCollection. This change adds support for the PCIeDeviceCollection and references it from Chassis. Tested: Passed the Redfish Service Validator. Change-Id: If3bb75f4fa90a9df4a2a94a7c7e0bcaf37673723 Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Add support for LogService.ClearLog to CrashdumpJason M. Bills2019-10-291-20/+61
| | | | | | | | | | | | Tested: Used Postman to send the LogService.ClearLog action on Crashdump and verified that the existing logs were cleared and the next new log started at ID 0. Passed the Redfish Service Validator. Change-Id: I9b895b3d2e1865add42e4c35c77f55c8832385da Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Enable autoexpand on the Crashdump LogEntryCollectionJason M. Bills2019-10-291-51/+163
| | | | | | | | | | | | | | | The current Crashdump LogEntry contains non-standard properties and could be very large causing problems for autoexpand. This change uses a LogEntry OEM type to specify a URI where the full log can be retrieved and enables autoexpand on the LogEntryCollection. Tested: Passed the Redfish Service Validator. Change-Id: I6a402d216e6d8228ea2825ab4c6d02b9c8023fc5 Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Simplify the OnDemand Crashdump return dataJason M. Bills2019-10-291-46/+39
| | | | | | | | | Tested: Ran an on-demand crashdump and confirmed that the output is correct. Change-Id: I993a36d3a6966433cbc6ede9e2d0702b319e3fd0 Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Move to more modern headersEd Tanous2019-10-281-2/+1
| | | | | | | | | We had a couple places where the c style headers got checked in for Tested: Code builds. Signed-off-by: Ed Tanous <ed.tanous@intel.com> Change-Id: Iebfbd846033618ff972825a0a9f89e8d05395ce8
* Support PATCH for HostWatchDogTimer in redfishYong Li2019-10-251-1/+113
| | | | | | | | | | | | | | | | | | | | | | This commit adds support for SET DBUS properties "Enabled" and "ExpireAction" for WatchDogTimer in the Redfish ComputerSystems schema. FunctionEnabled values can be false/true . TimeoutAction values can be "None","PowerCycle","PowerDown","ResetSystem". Tested: Modify the watchdog properties: curl --noproxy $BMCIP -k -H "Content-Type: application/json" -X PATCH \ https://root:0penBmc@$BMCIP/redfish/v1/Systems/system -d \ '{"WatchdogTimer":{"FunctionEnabled": false,"TimeoutAction": "PowerCycle"}}' Check them: curl --noproxy $BMCIP -k -H "Content-Type: application/json" -X GET \ https://root:0penBmc@$BMCIP/redfish/v1/Systems/system ipmitool mc watchdog get Signed-off-by: Yong Li <yong.b.li@linux.intel.com> Change-Id: Ie41232a56b3d0a62be76ae27d6ded8920f7b9407
* Add HostWatchdogTimer attribute in redfishYong Li2019-10-251-0/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add HostWatchdogTimer attribute in redfish Based on redfish spec, add HostWatchdogTimer property in redfish/v1/Systems/system. This object describes the Host Watchdog Timer functionality, including FunctionEnabled, Status and TimeoutActionproperties: "HostWatchdogTimer": { "FunctionEnabled": false, "Status": { "State": "Enabled" }, "TimeoutAction": "None" } Tested: Validator checking for HostWatchdogTimer in below test cases: Set different timeout actions reset|poweroff|cycle|none: ipmitool mc watchdog set action=reset timeout=1000 int=msg use=oem Start watchdog: ipmitool mc watchdog reset ComputerSystem.v1_5_0.ComputerSystem:HostWatchdogTimer value: OrderedDict([('FunctionEnabled', False), ('Status', OrderedDict([('State', 'Enabled')])), ('TimeoutAction', 'None')]) <class 'collections.OrderedDict'> has Type: ComputerSystem.v1_5_0.WatchdogTimer complex is Optional ***going into Complex ComputerSystem.v1_5_0.WatchdogTimer:FunctionEnabled value: False <class 'bool'> has Type: Edm.Boolean Edm.Boolean Mandatory Test: OK permission OData.Permission/ReadWrite Success ComputerSystem.v1_5_0.WatchdogTimer:WarningAction value: n/a <class 'str'> has Type: ComputerSystem.v1_5_0.WatchdogWarningActions enum is Optional prop Does not exist, skip... ComputerSystem.v1_5_0.WatchdogTimer:TimeoutAction value: None <class 'str'> has Type: ComputerSystem.v1_5_0.WatchdogTimeoutActions enum Mandatory Test: OK permission OData.Permission/ReadWrite Success ComputerSystem.v1_5_0.WatchdogTimer: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 HostWatchdogTimer.FunctionEnabled PASS HostWatchdogTimer.WarningAction Optional HostWatchdogTimer.TimeoutAction PASS HostWatchdogTimer.Status complex HostWatchdogTimer.Status.State PASS Watchdog service is stopped, no such property in redfish Change-Id: I883e4b739a3fe525080ed486d2ca8e461fddf212 Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
* Add Health to Memory and Processor SummaryJames Feist2019-10-242-7/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These fields were missing Health. Add health objects to get the health associated with these items. Also update the health object to be able to add more than the 'main' health for a url, by allowing passing a json reference. Also, add a 'children' vector of more shared_ptr<HealthPopulate> so we don't double up on d-bus calls. Tested: "MemorySummary": { "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Disabled" }, "TotalSystemMemoryGiB": 0 }, "Model": "S2600WFT", "Name": "system", "PartNumber": "..........", "PowerState": "On", "ProcessorSummary": { "Count": 2, "Model": "Intel Xeon processor", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" } }, Change-Id: I06f802da93a44cfbac40b63d507e3b9faf0c999a Signed-off-by: James Feist <james.feist@linux.intel.com>
* Add Rebuilding to DrivesJames Feist2019-10-231-0/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | When the xyz.openbmc_project.Drive.State has rebuilding set true, make the state Updating. Tested: { "@odata.context": "/redfish/v1/$metadata#Drive.Drive", "@odata.id": "/redfish/v1/Systems/system/Storage/1/Drive/Drive_1", "@odata.type": "#Drive.v1_2_0.Drive", "Id": "Drive_1", "Manufacturer": "INTEL", "Model": "P4800X", "Name": "Drive_1", "PartNumber": "INTEL SSDPE21K375GA", "SerialNumber": "PHKE722600NL375AGN", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Updating" } } Change-Id: I401e5a8c416d969831cebde8b5b0723f41c3e1c7 Signed-off-by: James Feist <james.feist@linux.intel.com>
* Add Storage SchemaNikhil Potade2019-10-232-0/+288
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This takes the original commit below and updates it so that it passes the validatior, and provides the Status attribute in redfish when appropriate. Tested: Passed the validator { "@odata.context": "/redfish/v1/$metadata#Drive.Drive", "@odata.id": "/redfish/v1/Systems/system/Storage/1/Drive/Drive_2", "@odata.type": "#Drive.v1_2_0.Drive", "Id": "Drive_2", "Manufacturer": "INTEL", "Model": "P4800X", "Name": "Drive_2", "PartNumber": "INTEL SSDPE21K375GA", "SerialNumber": "PHKE722600NL375AGN", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" } } Original Commit Message: ------------------------------------------------------------------- Add Storage Schema for NVMe on Redfish This provides an implementation for the Get methods for the Storage schemas using following classes : - StorageCollection - Storage Tested: - Ran Redfish Service Validator to verify no issues are reported. - Tested that the NVMe drives in the system show up and proper fields are populated with appropriate data. - Tested with no drives present. Made sure the Storage interface shows no drives and Drive interface returns error message. Change-Id: Id0306ea413ac16a993110bb1a36cd95d939cff71 Signed-off-by: Nikhil Potade <nikhil.potade@linux.intel.com> Signed-off-by: James Feist <james.feist@linux.intel.com>
* Minor fix: Typo correctionAppaRao Puli2019-10-222-2/+2
| | | | | | | | | | Typo correction: 'refish' to "redfish" Tested: Checked chassis URI and observed correct spelling. Change-Id: Ic09ab11acd47fdf45fadc485df9c1fd03c0ee4fb Signed-off-by: AppaRao Puli <apparao.puli@linux.intel.com>
* Update to PCIeDevices 1.4 and add PCIeFunctionCollection supportJason M. Bills2019-10-221-8/+86
| | | | | | | | | | | | v1.4 of PCIe Devices changed from an array of Links to PCIeFunctions to a PCIeFunctionCollection. This change adds support for the PCIeFunctionCollection and references it from the PCIeDevices. Tested: Passed the Redfish Service Validator. Change-Id: I76f0265c588b52bd02a35bf669ae6edacfb6c2a4 Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Renamed User role name to ReadOnlyAppaRao Puli2019-10-222-4/+4
| | | | | | | | | | | | | | | | | | | | | | As per redfish specification (DSP0266), there are set of predefined privilege roles. In OpenBMC code has "User" as role name instead of "ReadOnly". So corrected the same. Updated Redfish.md accordingly. Spec says: Role Name = "ReadOnly" ▪ AssignedPrivileges = Login, ConfigureSelf Tested: - Role collection shows new role. - GET on /redfish/v1/AccountService/Roles/ReadOnly URI shows correct AssignedPrivileges. - Ran negative test with /redfish/v1/AccountService/Roles/User and observed error(404 - Not Found). - Ran Redfish validator and no new issues observed. Signed-off-by: AppaRao Puli <apparao.puli@linux.intel.com> Change-Id: I7b0132c628fb4950b6ec095269cd1a12e92aea9a
* bmcweb: fix "Clear Event Logs" functionality behavior in System logs page on ↵Tim Lee2019-10-181-3/+3
| | | | | | | | | | | | | | | | | | | | | | WebUI When BMCWEB_ENABLE_REDFISH_DBUS_LOG_ENTRIES option set to ON that means bmcweb will look to phosphor-logging for any D-Bus log entries. These will then be translated to Redfish EventLog Entries. Thus, we can see those Redfish Eventlog Entries when select "Event" system log type in System logs page. However, when this option set to ON, the "Clear Event Logs" functionality still clear /var/log/redfish file instead of clear log through xyz.openbmc_project.Collection.DeleteAll interface by DeleteAll action. It should to clear D-Bus log entries when BMCWEB_ENABLE_REDFISH_DBUS_LOG_ENTRIES option is ON. Thus, we provide our modification for correct this functionality behavior. Tested by: Nuvoton NPCM750 EVB and RunBMC Olympus platforms in WebUI. when BMCWEB_ENABLE_REDFISH_DBUS_LOG_ENTRIES option is ON to clear D-Bus log entries, and when option is OFF to clear /var/log/redfish log entries. Signed-off-by: Tim Lee <timlee660101@gmail.com> Change-Id: I71445806ae5a79c2c0622908f7ac60daaa2119b8 Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Systems: Add space in Debug tracesGunnar Mills2019-10-161-11/+11
| | | | | | | | | | Before: "Got 71led group objects" Tested: Built bmcweb with DCMAKE_BUILD_TYPE=Debug. Change-Id: I80f7613c338e9fd16b2335ca0adc935dfa142a51 Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
* Fix Redfish validator warningJason M. Bills2019-10-151-1/+1
| | | | | | | | | | | Trailing slash warnings now show up in the validator report, so fix this one. Tested: Passed the Redfish Service Validator. Change-Id: I8db7eb488b44eba9510ae4e1071b2da15eaa22c1 Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Handling of adding certificates the Redfish way (TrustStore)Zbigniew Kurzynski2019-10-141-2/+15
| | | | | | | | | | | | | | | | | | | Added handling for POSTing certificates the Redfish way (as proper JSON). Currently it was only possible to add certificate as a RAW certificate in request body. Now user is able to add it as { "CertificateType": "PEM", "CertificateString": "..." } as well as previously in RAW form. Tested: - Uploading certificates in RAW form - Uploading certificates in JSON form - In case of malformend reqeust a propser error message is returnd. Signed-off-by: Zbigniew Kurzynski <zbigniew.kurzynski@intel.com> Change-Id: Iab563964102b0a1a351cb0bb1ea181643da33480
* Fix some warningsEd Tanous2019-10-112-6/+13
| | | | | | | | | | | -werror on the newest version of GCC finds even more stuff than was found before. Fix all of them. Tested: No functional change. In theory these cases can't occur unless a dbus interface is broken. Signed-off-by: Ed Tanous <ed.tanous@intel.com> Change-Id: Id11e29e4851075b511e69cbc006aa8d7e1e229f0
* Support uploading multiple certificates [install-middlewere]Zbigniew Kurzynski2019-10-101-16/+31
| | | | | | | | | | | | | This review is a fix for changes in Install API. See review: https://gerrit.openbmc-project.xyz/c/openbmc/phosphor-certificate-manager/+/25634 Tested: Tested manaually, the POST method on certificate collection returns ID of created certificate. Signed-off-by: Zbigniew Kurzynski <zbigniew.kurzynski@intel.com> Depends-On: Ic8ab545c931d89a022acdabd5a755e3bf39e5a79 Change-Id: I70c449600623e4f1eabf63c23163683f6f513d43
* Fix a bunch of warningsEd Tanous2019-10-1014-181/+170
| | | | | | | | | | | | | | | using the list of warnings from here: https://github.com/lefticus/cppbestpractices/blob/e73393f25a85f83fed7399d8b65cb117d00b2231/02-Use_the_Tools_Available.md#L100 Seems like a good place to start, and would improve things a bit type-wise. This patchset attempts to correct all the issues in one shot. Tested: It builds. Will test various subsystems that have been touched Signed-off-by: Ed Tanous <ed.tanous@intel.com> Change-Id: I588c26440e5a97f718a0f0ea74cc84107d53aa1e
* SoftwareInventory: Catch more interfacesJames Feist2019-10-101-4/+2
| | | | | | | | | | Expand the path to a larger namespace, and allow non updateable interfaces to not error out. Tested: More interfaces appeared without error Change-Id: I4a6e3092c868cb5f3fe66401269d5c99f69328c8 Signed-off-by: James Feist <james.feist@linux.intel.com>
* update_service: s/update/imageJames Feist2019-10-081-2/+2
| | | | | | | | | | | Not all firmware is updateable, rename it to make sense. Tested: "Description": "ME image" Change-Id: I7f78032726e9e102e9626ae1c788b7be30db2651 Signed-off-by: James Feist <james.feist@linux.intel.com>
* Fix MaxConcurrentSessions property of GraphicalConsoleJae Hyun Yoo2019-10-071-1/+1
| | | | | | | | Now we support up to 4 concurrent KVM sessions so this commit fixes 'MaxConcurrentSessions' property of 'GraphicalConsole'. Change-Id: Id225247dcb2d0b884a8a41253863294385268585 Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
* Fix crash during GET of manager network protocolRatan Gupta2019-10-031-2/+3
| | | | | | | | | | | | | | | | | | | | If the ethernet interface is having the domain name entry then Redfish GET request on network manager protocol was crashing the bmcweb. This commit fixes this behaviour. Tested By: Configure the Domain Name and run the GET request on the network protocol: PASS GET request on the network protocol even the domain name was not configured : PASS Redfish Validator: PASS Signed-off-by: Ratan Gupta <ratagupt@linux.vnet.ibm.com> Change-Id: I1e6cd6e3fe507ff375463ece1f6f10bae4d4fb6a
* Revert "Add Storage Schema for NVMe on Redfish"Ed Tanous2019-10-022-252/+0
| | | | | | | | | | This reverts commit e56c7b7092298c609831a65bcc8c21e62d422ba7. Reason for revert: /redfish/v1/Systems/1 returns no result. This should've been flagged in service validator, but the commit mentions that test was run, so it's not clear how this was missed. Reverting for a moment until we can determine what happened. Change-Id: I276d4cd239adb87b77264bc65ab4856705274ff0
* Add Storage Schema for NVMe on RedfishNikhil Potade2019-09-302-0/+252
| | | | | | | | | | | | | | | | | This provides an implementation for the Get methods for the Storage schemas using following classes : - StorageCollection - Storage Tested: - Ran Redfish Service Validator to verify no issues are reported. - Tested that the NVMe drives in the system show up and proper fields are populated with appropriate data. - Tested with no drives present. Made sure the Storage interface shows no drives and Drive interface returns error message. Signed-off-by: Nikhil Potade <nikhil.potade@linux.intel.com> Change-Id: I9fa9f4cd69fe07cde15604c5405a6987774065fd
* bmcweb: Add Threshold properties to SensorsAnthony Wilson2019-09-261-25/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added the Sensor Threshold properties: UpperCritical LowerCritical UpperCaution LowerCaution Sample Output: curl -k -H "X-Auth-Token: $bmc_token" -X GET https://${bmc}/redfish/v1/Chassis/chassis/Sensors/p1_vdd_current { "@odata.context": "/redfish/v1/$metadata#Sensor.Sensor", "@odata.id": "/redfish/v1/Chassis/chassis/Sensors/p1_vdd_current", "@odata.type": "#Sensor.v1_0_0.Sensor", "Id": "p1_vdd_current", "Name": "p1 vdd current", "Reading": 0.0, "ReadingRangeMax": 0.0, "ReadingRangeMin": 0.0, "ReadingUnits": "Amperes", "Status": { "Health": "Critical", "State": "Enabled" }, "Thresholds": { "LowerCaution": { "Reading": 0.0 }, "LowerCritical": { "Reading": 0.0 }, "UpperCaution": { "Reading": 320.0 }, "UpperCritical": { "Reading": 360.0 } } } Change-Id: Ia76ff1308653ece90830a06333611960da43cb57 Signed-off-by: Anthony Wilson <wilsonan@us.ibm.com> Signed-off-by: Ed Tanous <ed.tanous@intel.com>
* Redfish: Add PATCH operation support for RemoteRoleMappingRatan Gupta2019-09-241-3/+189
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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" } ], 15. Try to delete the role map when there was no role map entry and get the following error. "RemoteRoleMapping/1@Message.ExtendedInfo": [ { "@odata.type": "/redfish/v1/$metadata#Message.v1_0_0.Message", "Message": "The value null for the property RemoteRoleMapping/0 is of a different type than the property can accept.", "MessageArgs": [ "null", "RemoteRoleMapping/0" ], "MessageId": "Base.1.4.0.PropertyValueTypeError", "Resolution": "Correct the value for the property in the request body and resubmit the request if the operation failed.", "Severity": "Warning" } Signed-off-by: Ratan Gupta <ratagupt@linux.vnet.ibm.com> Change-Id: Iaa37221bd6fdc87dbf51755d9425ecd5b07eee6c
* bmcweb: Implement SensorCollectionAnthony Wilson2019-09-242-110/+361
| | | | | | | | | | | Add collection of all power and current sensors. Testing: Verified SensorCollection and Sensor output on a Witherspoon system. Verified no errors from RedfishServiceValidator. Change-Id: Icfdc14d738bf037d5d599a3c6fc0be5ea0919929 Signed-off-by: Anthony Wilson <wilsonan@us.ibm.com>
* Handling of adding certificates the Redfish wayKowalski, Kamil2019-09-231-3/+51
| | | | | | | | | | | | | | | | | | | | Added handling for POSTing certificates the Redfish way (as proper JSON). Currently it was only possible to add certificate as a RAW certificate in request body. Now user is able to add it as { "CertificateType": "PEM", "CertificateString": "..." } as well as previously in RAW form. Tested: - Uploading certificates in RAW form - Uploading certificates in JSON form - Uploading invalid certificates - Uploading invalid JSON requests Change-Id: Icf0f6b928e63fc3cc5cd089b483b3799fbe715de Signed-off-by: Kowalski, Kamil <kamil.kowalski@intel.com>
* Fix: Only return error info in invalid URI caseAyushi Smriti2019-09-232-16/+17
| | | | | | | | | | | | | | | Collection schemas return some valuable parameter information values on get query, even when the URI is invalid and 404/400 error code is returned. Fix for the same is provided by packing the json response at proper places and returning only the required error info, for security reasons. Tested: Verified by redfish GET query for invalid uri cases. Only error msg and info is returned. Signed-off-by: Ayushi Smriti <smriti.ayushi@linux.intel.com> Change-Id: Iae45da86c2d2adbc39d78f7c267d551d4e6525f2
* Read AllGroups property from user managerAyushi Smriti2019-09-231-31/+59
| | | | | | | | | | | | This bmcweb code is to create users as per the available groups, and make the code dynamic. Tested: Created a new user and did redfish post query. Verified through busctl introspection, available groups were listed for the new user. Signed-off-by: Ayushi Smriti <smriti.ayushi@linux.intel.com> Change-Id: Ifec6d71d9721e4bfef53c9e38b17e9b7864777e6
* Define MaxConcurrentSessions property for Manager.SerialConsole and ↵Kuiying Wang2019-09-191-1/+4
| | | | | | | | | | | | | | | | | | | | | | | GraphicalConsole This is required feature Tested: 1. Verified by Readfish Service Validator. 2. https://IP_ADDR/redfish/v1/Managers/bmc "GraphicalConsole": { "ConnectTypesSupported": ["KVMIP"], "MaxConcurrentSessions": 1, "ServiceEnabled": true } "SerialConsole": { "ConnectTypesSupported": ["IPMI", "SSH"], "MaxConcurrentSessions": 15, "ServiceEnabled": true } Change-Id: I01700085f4d9d7f3a4aa80fa4240ed201e948159 Signed-off-by: Kuiying Wang <kuiying.wang@intel.com>
* Revert "Fix remove callback user privilege access to login"Ed Tanous2019-09-181-1/+1
| | | | | | | | | | This reverts commit 8e69d148249f6a45cea10e988ec03430a5932784. Reason for revert: This causes service validator failures. I missed the fact that despite being asked a couple times, the service validator wasn't run. Please run it, resolve your bug, and resubmit as a new review. Change-Id: I0bb61ab1a618a96b2ed2c600825ec72b8d020ec0
* Fix remove callback user privilege access to loginanil kumar appana2019-09-161-1/+1
| | | | | | | | | | | | | | | | | | | Callback privilege user must not be allowed to login,similar to IPMI. This user is used for callback purpose from IPMI point of it, and must be maintained in bmcweb to be consistent with IPMI, Hence removing the access to login for callback user Tested: 1.Create a user with username 'test1' and privilege - "Callback" via Redfish. 2.Using that Callback level credentials, try to do "Get" at this URI https://<ip-addr>/redfish/v1/Systems/system 3.output: Forbidden 4.use same URL to login from webUI with callback privilege https://<ip-addr>/redfish/v1/Systems/system 5.output: Forbidden Signed-off-by: anil kumar appana <anil.kumarx.appana@intel.com> Change-Id: I86dac565fc874e5d0fe033640ffc3de576a1f693
* Redfish: Make NIC HW reflect PATCH changesJohnathan Mantey2019-09-131-459/+388
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PATCH commands only changed the state of the DBus database. The PATCH did not actually change the state of the NIC settings. IPMITOOL and "ip addr" both delete the specific hash entry, and then create a new entry using the requested state. This change aligns Redfish with that behavior. The requested element is deleted, and subsequently recreated with the new values. This guarantees the NIC HW is actually updated, and in sync with the DBus database. Tested by: From eth1 modify eth0 state: IPv4 tests: Delete all addresses Create five new addresses Add a new entry to the end of the collection Delete the new entry just added Send a "keep" command that does not modify any state, and "keeps" more entries than are actually in the IPv4Addresses collection Keep all entries, and delete entries that do not exist Delete all entries except self assigned Send a PATCH with an empty IPv4StaticAddresses array IPv6 tests: Delete all entries except SLAAC Create five static entries Modify only the prefix for one entry Modify only the address for one entry Add an additional entry Delete the new entry Keep all entries, plus a few that don't exist Keep all entries, delete a few that don't exist Delete all entries except SLAAC Send a PATCH with an empty IPv6StaticAddresses array Change-Id: Id5f733f795588ba36b5d3ab3b0017a01ee3f2da7 Signed-off-by: Johnathan Mantey <johnathanx.mantey@intel.com>
* Redfish: Permit Usb and CD boot overridesJohnathan Mantey2019-09-051-151/+87
| | | | | | | | | | | | | | | | | | | | | | | | | Implemented corrections to allow booting from removeable media. USB did not function, and CD was also failing. Eliminated code that calculated the boot string and boot mode twice. Always assigned a boot type and boot mode, to simplify the asynchronous function calls. Changed the Redfish result to return "204 No Content" when the PATCH operation is successful. Any async function call that fails overrides this value. Tested: Performed a full set of BootSource/BootMode combinations. Confirmed the values were set correctly by using "ipmitool raw 0 9 5 0 0" to read the values that the BIOS will read after a reboot. Also tested the full set of combinations by issuing hard resets. All boot combinations worked on a S2600WF within the limits of the S2600WF BIOS. Change-Id: If5480e20040d96bc12961125fdbd4ebbb30b0ada Signed-off-by: Johnathan Mantey <johnathanx.mantey@intel.com>
* Redfish: Make PATCH NTP Servers operate correctlyJohnathan Mantey2019-09-031-20/+25
| | | | | | | | | | | | | | The Managers NTP node did not get implemented correctly. The first level parsing did not search for "NTP" as the base entry, nor did it correctly attempt to acquire the NTPServers, NTPEnabled sub-nodes. Removed the data response as it was returning a string vector instead of a json::array. The original code caused a seg fault. Instead of returning a carbon copy of the values sent, the return is a 204 code, indicating success and returning no data. Change-Id: Ifb82855e1cd143e3cf2cb8979531b01b27d32234 Signed-off-by: Johnathan Mantey <johnathanx.mantey@intel.com>
* Redfish: Prevent IndicatorLED PATCH from breaking Boot PATCHJohnathan Mantey2019-08-301-10/+8
| | | | | | | | | | | | | | | | | | Preloading an error into res.result causes the readJson function to return with that same error. This blocks any PATCH actions on the Boot array. The PATCH command now responds with an OK response instead of a Missing Data response. Tested: Confirmed the Lit action illuminates the ID LED. Confirmed the Blinking action causes the ID LED to blink. Confirmed the Off action turns off the ID LED. Confirmed Blinking overrides Lit. Confirmed Lit overrides Blinking. Confirmed Flashing is returns an error message. Change-Id: I86104e2a1232f1905a7c54eb00e399b634fa69d3 Signed-off-by: Johnathan Mantey <johnathanx.mantey@intel.com>
* Network : Fix the Service Validator FailureManojkiran Eda2019-08-271-1/+1
| | | | | | | | | | | | | | | | | | | | | On a DHCP Enabled System, the StaticNameServer property is not aligned to the redfish schema rules and the validator reports the below error: StaticNameServers: Value of Collection property is null but Collections cannot be null, only their entries. Testedby: Redfish Validator *** /redfish/v1/JsonSchemas/EthernetInterface Type (#JsonSchemaFile.v1_0_2.JsonSchemaFile), GET SUCCESS (time: 1.134773) PASS Note: - Previously missed this failure, as i verified the validator on Statically configured setup Signed-off-by: Manojkiran Eda <manojkiran.eda@gmail.com> Change-Id: I6119e8d5783571ac75084301b49df1f44a558c8b
* Avoid populating StaticNameServers propertyManojkiran Eda2019-08-201-1/+9
| | | | | | | | | | | | | | | | | | Redfish ethernet schema has two properties for nameservers 1.NameServers - Represents nameservers currently in use on Interface 2.StaticNameServers -Represents only statically defined set of DNS As we have only one DBUS property `Nameservers` which is used for both the static and dynamic nameservers, So the idea behind this commit is to not populate the StaticnameServers property when DHCP mode is enabled. Tested By: GET https://${BMC_IP}/redfish/v1/Managers/bmc/EthernetInterfaces/eth0 Signed-off-by: Manojkiran Eda <manojkiran.eda@gmail.com> Change-Id: I64f66bde55ec41dc78befbb659a0cbc425bbc24b
* Redfish: Add TrustStore certificate supportMarri Devender Rao2019-08-162-0/+156
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1) Implements CertificateCollection schema to upload CA certificates and to list existing CA certificates 2) Modified CertificateLocatons schema to list CA certificates 3) Modified ReplaceCertificate action of CertificateService schema to cater for replacing existing CA certificate Tested: 1) No validation failure 2) Truststore CertificateCollection curl -k -H "X-Auth-Token: $bmc_token" -X GET https://${bmc}/redfish/v1/Managers/bmc/Truststore/Certificates/ { "@odata.context": "/redfish/v1/$metadata#CertificateCollection.CertificateCollection", "@odata.id": "/redfish/v1/Managers/bmc/Truststore/Certificates/", "@odata.type": "#CertificateCollection.CertificateCollection", "Description": "A Collection of TrustStore certificate instances", "Members": [], "Members@odata.count": 0, "Name": "TrustStore Certificates Collection" } 3) Upload certificate 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/Truststore/Certificates { "@odata.context": "/redfish/v1/$metadata#Certificate.Certificate", "@odata.id": "/redfish/v1/Managers/bmc/Truststore/Certificates/1", "@odata.type": "#Certificate.v1_0_0.Certificate", "CertificateString": ----\n", "Id": "1", "Issuer": { "CommonName": "localhost", "Organization": "openbmc-project.xyz" }, } 4) Certificate Locations curl -k -H "X-Auth-Token: $bmc_token" -X GET https://${bmc}/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 tolocate 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" }, { "@odata.id": "/redfish/v1/Managers/bmc/Truststore/Certificates/1" } ], "Certificates@odata.count": 3 }, "Name": "Certificate Locations" } 5)Replace certificate curl -c cjar -b cjar -k -H "X-Auth-Token: $bmc_token" -X POST https://${bmc}/redfish/v1/CertificateService/Actions/Certificateervice.ReplaceCertificate/ -d @data_auth.json { "@odata.context": "/redfish/v1/$metadata#Certificate.Certificate", "@odata.id": "/redfish/v1/Managers/bmc/Truststore/Certificates/1", "@odata.type": "#Certificate.v1_0_0.Certificate", "CertificateString": "-----BEGIN CERTIFICATE--------\n", "Id": "1", "Issuer": { "CommonName": "localhost", "Organization": "openbmc-project.xyz" }, 6)List CertificateCollection curl -k -H "X-Auth-Token: $bmc_token" -X GET https://${bmc}/redfish/v1/Managers/bmc/Truststore/Certificates/ { "@odata.context": "/redfish/v1/$metadata#CertificateCollection.CertificateCollection", "@odata.id": "/redfish/v1/Managers/bmc/Truststore/Certificates/", "@odata.type": "#CertificateCollection.CertificateCollection", "Description": "A Collection of TrustStore certificate instances", "Members": [ { "@odata.id": "/redfish/v1/Managers/bmc/Truststore/Certificates/1" } ], "Members@odata.count": 1, "Name": "TrustStore Certificates Collection" } Change-Id: Ic9644fadfe6fe89b529e16336cc6bcd804810b3a Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com>
* Redfish: Extend GenerateCSR action for LDAP certificate collectionMarri Devender Rao2019-08-161-0/+29
| | | | | | | | | | | | | | | | | | | | Tested: 1) Tested schema with validator and no issues curl -c cjar -b cjar -k -H "X-Auth-Token: $bmc_token" -X POST https://${bmc}/redfish/v1/CertificateService/Actions/CertificateService.GenerateCSR/ -d @generate_ldap_required.json { "CSRString": "-----BEGIN CERTIFICATE REQUEST-----\\nLoyR0IExAw==\n-----END CERTIFICATE REQUEST-----\n", "CertificateCollection": { "@odata.id": "/redfish/v1/AccountService/LDAP/Certificates/" } } Change-Id: Iae0919a2f222c1f85e5428d9140e386f8695370d Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com>
* Redfish: GenerateCSR action for HTTPS certificateMarri Devender Rao2019-08-161-3/+278
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implemented GenerateCSR action of CertificateService for generating CSR of HTTPS certificate CSR requests initiated through D-Bus are time-consuming and might result D-Bus time-out error GenerateCSR request is performed in child process in the backend so that caller is returned immediately. Caller need to register for "InterfacesAdded" signal generated when a new CSR object is creatd by backend after completion of the CSR request. Caller initiates read on the CSR object created to read the CSR string. Timer is added to cancel the operation if "Interfaces Added" signal is not received in a specified time. Modified to support only 2048 keybit length due to time taken in private key generation. Tested 1) Tested schema with validator and no issues 2) curl -c cjar -b cjar -k -H "X-Auth-Token: $bmc_token" -X POST https://${bmc}/redfish/v1/CertificateService/Actions/CertificateService.GenerateCSR/ -d @generate_https.json { "CSRString": "-----BEGIN CERTIFICATE ..." "CertificateCollection": { "@odata.id": "/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/" } } 3. generate_https.json { "City": "Austin", "CertificateCollection": { "@odata.id": "/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/" }, "CommonName": "www.ibm.com", "ContactPerson":"myname", "AlternativeNames":["www.ibm.com"], "ChallengePassword":"", "Email":"openbmc@in.ibm.com", "GivenName":"", "Initials":"", "Country": "US", "KeyCurveId":"", "KeyUsage":["KeyAgreement"], "KeyBitLength": 1024, "KeyPairAlgorithm": "RSA", "Organization": "IBM", "OrganizationalUnit": "ISL", "State": "AU", "Surname": "", "UnstructuredName": "" } 4) Verified Required and Optional parameters 5) Generate EC CSR with curve ID secp224r1 curl -c cjar -b cjar -k -H "X-Auth-Token: $bmc_token" -X POST https://${bmc}/redfish/v1/CertificateService/Actions/CertificateService.GenerateCSR/ -d @generate_https.json { "CSRString": "-----BEGIN CERTIFICATE REQUEST-----\nMIIBQzCB8wIBATCBmzEUMBIGA1UdEQwLd3d3LmlibS5jb20xDzANBgNVBAcMBkF1\nc3RpbjEUMBIGA1UEAwwLd3d3LmlibS5jb20xDzANBgNVBCkMBm15bmFtZTELMAkG\nA1UEBhMCVVMxDDAKBgQrDgMCDAJFQzEVMBMGA1UdDwwMS2V5QWdyZWVtZW50MQww\nCgYDVQQKDANJQk0xCzAJBgNVBAgMAkFVME4wEAYHKoZIzj0CAQYFK4EEACEDOgAE\n7hyL8FWmeCBRpCxWKjlce9nRghwS0lBrBdslOZ+n9+hFD+0KD8L+BORwm7dfzGlG\nTblh2G6cQ8KgADAKBggqhkjOPQQDAgM/ADA8Ahw1nlGdEFfnb+2zxdfVeTQYgCTw\nNos0t2rsGc/zAhxS9/paXZtVqR+WzdQVsjSLC/BedbXv1EmW52Uo\n-----END CERTIFICATE REQUEST-----\n", "CertificateCollection": { "@odata.id": "/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/" } } Change-Id: I2528c802ff3c6f63570cdb355b9c1195797a0e53 Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com>
* Redfish: Move power supplies to Power schemaShawn McCarney2019-08-152-242/+515
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Made the following enhancements related to power supplies in Redfish: * Moved power supplies from Chassis schema to Power schema * Added support for multiple power supplies within one chassis * Added support for multiple sensors associated with one power supply * Set power supply Name and MemberId to inventory item name (like powersupply0) rather than sensor name (like ps0_input_power). * Set power supply VPD fields like Manufacturer and SerialNumber Also improved support for power sensors that are not related to power supplies, such as VRM sensors. These sensors are no longer treated as power supplies, and they will not be included in the Power schema output. They should instead be included in the SensorCollection output when that support is completed. Uses an ObjectMapper association named "inventory" to find the power supply inventory item associated with a power sensor. For example: /xyz/openbmc_project/sensors/power/ps0_input_power/inventory -> /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0 See https://github.com/openbmc/docs/blob/master/sensor-architecture.md for more information on associations between sensors and low-level hardware items. Test Plan: https://gist.github.com/smccarney/43b2fae304575302af61332a71280d74 Tested: Verified Power and Thermal output on a Witherspoon system. Tested with power sensors that were/were not associated with power supplies. Verified power supply properties in Power output. Verified that power supplies are no longer returned in Chassis collection output. Ran Redfish Service Validator. Change-Id: I50db389b5df011bfb561d31aafb33cc4bf7fcde6 Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
* Don't return a 500 error for entries without priority metadataJason M. Bills2019-08-081-3/+1
| | | | | | | | | | | | | | This change makes an entry with no priority metadata default to "OK" instead of returning a 500 error. Tested: Logged an entry without priority and confirmed that getting the Entries returns 200. Passed the Redfish Service Validator. Change-Id: I5a4633ef8542da6eaacad28953e5c99d992576fa Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Fix getting individual journal entries with an underscoreJason M. Bills2019-08-081-2/+13
| | | | | | | | | | | | | | | | | The journal entries with an underscore in the ID could not be accessed individually. This change tracks the unique ID while searching for the entry so it can find the correct entry with an underscore. Tested: Checked that individual journal entries with and without an underscore can be accessed. Passed the Redfish Service Validator. Change-Id: I4aedbe1cb7d5f3cb896c5a0e766e9a274f0ee076 Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Add CPU core count propertyRAJESWARAN THILLAIGOVINDAN2019-08-081-56/+149
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Read the core objects for the given CPU Id and report the count of core objects having the property "Present" set as true. Testing: 1.Ran Redfish schema validator - no issues 2.Ran GET request for cpu0 and cpu1 to get the total cores for verification. The total cores that are present reported by the Redfish output matches with the total cores reported by the inventory Rest API. curl -k -H "X-Auth-Token: $bmc_token" -X GET https://${bmc}/redfish/v1/Systems/system/Processors/cpu0 { "@odata.context": "/redfish/v1/$metadata#Processor.Processor", "@odata.id": "/redfish/v1/Systems/system/Processors/cpu0", "@odata.type": "#Processor.v1_3_1.Processor", "Id": "cpu0", "InstructionSet": "PowerISA", "Manufacturer": "IBM", "Model": "", "Name": "Processor", "ProcessorArchitecture": "Power", "ProcessorType": "CPU", "Status": { "Health": "OK", "State": "Enabled" }, "TotalCores": 18 } Change-Id: I3d65daed42fafd85ae2e4659e764ac061f1b1626 Signed-off-by: RAJESWARAN THILLAIGOVINDAN <rajeswgo@in.ibm.com>
* Fix "MemorySummary" status: Disabled on IBM systemsAlpana Kumari2019-08-081-22/+95
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "MemorySummary" Status is always Disabled.Fixed it. Doing GET on Interface xyz.openbmc_project.State.Decorator.OperationalStatus instead of xyz.openbmc_project.Inventory.Item.Dimm to get the State of Dimm Tested: -- Ran GET request on the ComputerSystem node when Host is Up curl -k -H "X-Auth-Token: $bmc_token" -X GET https://${bmc}/redfish/v1/Systems/system "MemorySummary": { "Status": { "State": "Enabled" }, "TotalSystemMemoryGiB": 0 }, Redfish schema validator. ComputerSystem.v1_0_0.MemorySummary: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 MemorySummary.TotalSystemMemoryGiB PASS MemorySummary.Status complex MemorySummary.Status.State PASS Change-Id: I272a2c6c53f39be3dafd62759be4cc65aa0dd74f Signed-off-by: Alpana Kumari <alpankum@in.ibm.com>
* Fix Regression in PATCH on system nodeSantosh Puranik2019-08-022-6/+7
| | | | | | | | | | | | | | | | | | | | | | Commit d573bb2a regressed the PATCH operation on the system redfish node. By initializing result to no_content, the commit broke the subsequent json_util::readJson, which checks if the result is "ok" at the end of the function. This commit fixes it by making readJsonValues() and its descendants return a bool status. readJson() no longer relies on the response object result to indicate success/ failure. Tested: -- Verified that PATCH operations on the system node now work. -- Verified PATCH operations work on manager, accountservice and ethernetinterfaces nodes. -- No new errors from the Redfish validator. Signed-off-by: Santosh Puranik <santosh.puranik@in.ibm.com> Change-Id: I54080392297a8f0276161da8b48d8f9518cbdcfe
OpenPOWER on IntegriCloud