summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Add sensor health supportJames Feist2019-06-191-1/+81
| | | | | | | | | | | Read through the thresolds and determine if any are crossed. If so, change the status of the sensor. Tested: Used sensor override to modify a sensor value, asserting the threshold. Change-Id: Id56e036449ca019a5e9563df68af0f590c693045 Signed-off-by: James Feist <james.feist@linux.intel.com>
* Redfish: ApplyTime property patch supportJayashankar Padath2019-06-141-0/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change is to set the ApplyTime property using the UpdateServce redfish schema before initiating the BMC image upload and activation. Verified sequence flow: 1. The user sets the desired ApplyTime value (OnReset/Immediate) using the PATCH request 2. Execute "POST -T ./obmc-phosphor-image-witherspoon-20190522045427.ubi.mtd.tar https://${bmc}/redfish/v1/UpdateService" 3. During the end of activation, if the ApplyTime value is Immediate, force-reboot.service gets called which reboots the BMC. If the ApplyTime value is OnReset, no force reboot will be triggered and the new BMC image will be functional when the user decideds to reboot the BMC manually. Tested: PATCH -d '{ "ApplyTime":"OnReset"}' https://${bmc}/redfish/v1/UpdateServce { "@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" } ] } PATCH -d '{ "ApplyTime":"OnRset"}' https://${bmc}/redfish/v1/UpdateServie { "ApplyTime@Message.ExtendedInfo": [ { "@odata.type": "/redfish/v1/$metadata#Message.v1_0_0.Message", "Message": "The value OnRset for the property ApplyTime is not in the list of acceptable values.", "MessageArgs": [ "OnRset", "ApplyTime" ], "MessageId": "Base.1.4.0.PropertyValueNotInList", "Resolution": "Choose a value from the enumeration list that the implementation can support and resubmit the request if the operation failed.", "Severity": "Warning" } ] } Signed-off-by: Jayashankar Padath <jayashankar.padath@in.ibm.com> Change-Id: If79934f7db450c2ad3bea60307419b17981e4dfe
* Fix some of the system endpointsEd Tanous2019-06-141-175/+186
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. Move the system endpoints to AsyncResp where possible. This starts to clean up our scope issues, and makes the code a bit cleaner, as it's not tabbed in as much. It's by no means a fix, but it certainly is better, and easier to verify. Also it gives us throw protection as far as the connection objects go. 2. Implement the "properties" field when accessing urls like: /bus/system/<serviceName>/<ObjectPath>/<InterfaceName> Tested: Called GET on /bus/system/xyz.openbmc_project.FanSensor/xyz/openbmc_project/sensors/fan_tach/Fan_1/xyz.openbmc_project.Sensor.Value and observed the response: { "bus_name": "xyz.openbmc_project.FanSensor", "interface": "xyz.openbmc_project.Sensor.Value", "methods": [], "object_path": "/xyz/openbmc_project/sensors/fan_tach/Fan_1", "properties": { "MaxValue": 14000.0, "MinValue": 0.0, "Value": null }, "signals": [], "status": "ok" } Previous to this patch, properties was an empty object {} Signed-off-by: Ed Tanous <ed.tanous@intel.com> Change-Id: I8fceb395fb64f2a1857df8ba64b5914c09c18552
* Fix errors introduced in Message RegistriesEd Tanous2019-06-142-132/+87
| | | | | | | | | | | | | | | A recent commit introduced Service Validator regressions in the Registries that we use. This was largely because the commits were structured in a way that was hard to review. This commit Resolves that, and structures the data memebers in a more readable way. Tested: ran service validator, observed no failures on Registries. Signed-off-by: Ed Tanous <ed.tanous@intel.com> Change-Id: I7e15899187e333f843e5571ac9908b22624c16e9
* managers: allow starting stateJames Feist2019-06-141-0/+34
| | | | | | | | | | | | | Query d-bus broker, and if the state is less than 100%, set the bmc state to "Starting". Tested: Had application that was failing on system, queried broker and saw Progres was set to 0.97, bmcweb reported "State": "Starting". Disabled that app, and state went to "Enabled". Change-Id: I4123d2f4a6388aff6891a5a02aa98b7a89777d5f Signed-off-by: James Feist <james.feist@linux.intel.com>
* REST: PUT: return DBus error descriptionLei YU2019-06-142-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | sdbusplus adds message::get_error() to provide the actual sd_bus_error of a message. With this, return the error's name and message in REST API so that the correct error is returned to end user. Tested: Verify the REST API output when trying to set host time while the settings does not allow that: $ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X PUT -d '{"data": 1436655598435272}' https://$bmc/xyz/openbmc_project/time/bmc/attr/Elapsed { "data": { "description": "xyz.openbmc_project.Time.Error.NotAllowed" }, "message": "The operation is not allowed", "status": "error" } Resolves openbmc/bmcweb#83 Change-Id: I0bd5405c6748d124f9dd8a341e29f3918445158e Signed-off-by: Lei YU <mine260309@gmail.com>
* Remove AllowableValues for read-only LDAP valuesEd Tanous2019-06-131-4/+0
| | | | | | | | | | | | | | Given that today LDAP doesn't support modification of the AccountProviderType, and AuthenticationType parameters, providing AllowableValues is a bit of a misnomer, and a waste. Tested: Work in progress. Would like to get concensus on this, then will verify correct responses and error codes Signed-off-by: Ed Tanous <ed.tanous@intel.com> Change-Id: I6d2d38b581ce5a9f7b4106582aeb4ec3fc9c424a
* [Redfish] Add FQDN and IPv6Address in NetworkProtocol and EthernetInterfaceJennifer Lee2019-06-132-16/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | FQDN and IPv6Address are mandatory properties in OCP profile. Tested: GET /redfish/v1/Managers/bmc/NetworkProtocol HTTP/1.1 Response: { "@odata.context": "/redfish/v1/$metadata#ManagerNetworkProtocol.ManagerNetworkProtocol", "@odata.id": "/redfish/v1/Managers/bmc/NetworkProtocol", "@odata.type": "#ManagerNetworkProtocol.v1_4_0.ManagerNetworkProtocol", "Description": "Manager Network Service", "FQDN": <host name>.<domain name>, "HTTPS": { "Port": 443, "ProtocolEnabled": true }, "HostName": <host name>, ... } GET /redfish/v1/Managers/bmc/EthernetInterfaces/eth0 HTTP/1.1 Response: { "@odata.context": "/redfish/v1/$metadata#EthernetInterface.EthernetInterface", "@odata.id": "/redfish/v1/Managers/bmc/EthernetInterfaces/eth0", "@odata.type": "#EthernetInterface.v1_4_1.EthernetInterface", ... "FQDN": <host name>.<domain name>, "HostName": <host name>, ... "IPv6Addresses": [], ... } Signed-off-by: Jennifer Lee <jennifer1.lee@intel.com> Change-Id: I0ca8f98523cbcfc935e0ac3bbf93f87762ff183b
* Redfish: Added OCP mandatory propertiesJennifer Lee2019-06-134-14/+120
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Manager: Added SerialConsole, Links/ManagerForChassis and Links/ManagerForChassis@odata.count - System: Added Links/Chassis, Links/ManagedBy, Status, BiosVersion - Power: Added placeholder for PowerControl Tested: GET /redfish/v1/Systems/system HTTP/1.1 Response: { "@odata.context": "/redfish/v1/$metadata#ComputerSystem.ComputerSystem", "@odata.id": "/redfish/v1/Systems/system", "@odata.type": "#ComputerSystem.v1_6_0.ComputerSystem", ...... "BiosVersion": "SE5C620.86B.01.00.0361.120520162351", ...... "Description": "Computer System", "Id": "system", "IndicatorLED": "Off", "Links": { "Chassis": [ { "@odata.id": "/redfish/v1/Chassis/R1000_Chassis" } ], "ManagedBy": [ { "@odata.id": "/redfish/v1/Managers/bmc" } ] }, ...... "Processors": { "@odata.id": "/redfish/v1/Systems/system/Processors" }, "Status": { "Health": "OK", "State": "Enabled" }, "SystemType": "Physical", "UUID": "13876882-7708-4200-bcf2-2c5681218bc8" } GET /redfish/v1/Managers/bmc HTTP/1.1 Response: { "@odata.context": "/redfish/v1/$metadata#Manager.Manager", "@odata.id": "/redfish/v1/Managers/bmc", "@odata.type": "#Manager.v1_3_0.Manager", ...... "Description": "Baseboard Management Controller", "Linkn"fces": { "@odata.id": "/redfish/v1/Managers/bmc/EthernetInterfaces" }, "FirmwareVersion": "2.7.0-dev-266-g111d297-d14e857", "Id": "bmc", Links: { "ManagerForChassis": [ { "@odata.id": "/redfish/v1/Chassis/R1000_Chassis" } ], "ManagerForChassis@odata.count": 1, "ManagerForServers": [ { "@odata.id": "/redfish/v1/Systems/system" } ], "ManagerForServers@odata.count": 1 }, ...... "SerialConsole": { "ConnectTypesSupported": [ "IPMI", "SSH" ], "ServiceEnabled": true }, "Status": { "Health": "OK", "State": "Enabled" }, "UUID": "067b4e8d-6c29-475c-92a1-6590d4e5818c" } GET /redfish/v1/Chassis/R1000_Chassis/Power HTTP/1.1 Response: { "@odata.context": "/redfish/v1/$metadata#Power.Power", "@odata.id": "/redfish/v1/Chassis/R1000_Chassis/Power", "@odata.type": "#Power.v1_2_1.Power", "Id": "Power", "Name": "Power", "PowerControl": [] } Signed-off-by: Jennifer Lee <jennifer1.lee@intel.com> Change-Id: I61d8ba493ad689d7062e1f8bfd26d9a0d80230da
* Redfish: Remove "state" response content from PATCH commandsJohnathan Mantey2019-06-131-131/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A PATCH command should not return any JSON content for the NICs. PATCH commands should only return success or failure responses. Reporting state based upon the input to the command is, in most instances, going to be incorrect in comparison to the actual state of the HW. For example: moving from static addresses to a DHCP assigned address cannot be predicted based upon the input. It also takes several seconds for a DHCP transaction to complete, which creates a significant temporal lag between what was sent and what will be. Tested: Performed the following tests: For IPv4: "IPv4Addresses": [ {}, { "Address": "192.168.20.12", "SubnetMask": "255.255.255.0", "Gateway": "192.168.20.1" } ] For IPv6: "IPv6StaticAddresses": [ { "Address": "2001::5:4:3:4", "PrefixLength": 64 } ] Both tests complete without emitting any JSON content. Change-Id: Ic7eb824eb6d996d85d52a3b7c855e9825f4a0d87 Signed-off-by: Johnathan Mantey <johnathanx.mantey@intel.com>
* Redfish: Remove the IPv4 AddressOrigin read-only elementJohnathan Mantey2019-06-131-88/+2
| | | | | | | | | | | | The AddressOrigin entry in the IPv4Addresses schema is read-only. It is not permitted to PATCH the AddressOrigin. Tested: Added the "AddressOrigin": "DHCP" to an IPv4Addresses PATCH command. The JSON response is "property is not in the list of valid properties". Change-Id: Id7d41e9f1b393738e20725495b3821dd2f9f69d0 Signed-off-by: Johnathan Mantey <johnathanx.mantey@intel.com>
* Redfish: Correctly identify IPv4 LinkLocal vs. LinkGlobalJohnathan Mantey2019-06-131-2/+2
| | | | | | | | | Self assigned IPv4 addresses must be flagged as LinkLocal, not LinkGlobal. Likewise global IPv4 addresses must be flagged as LinkGlobal. Change-Id: I9f6f0ceb3d312dd0198cb54c59c579ed96fbc38a Signed-off-by: Johnathan Mantey <johnathanx.mantey@intel.com>
* Updating Roles to version 1.2.1 to be in compliance with PSMEv2.4 specification.Zbigniew Kurzynski2019-06-131-1/+2
| | | | | | | | RedfishServiceValiddator passed with success on this service. Signed-off-by: Zbigniew Kurzynski <zbigniew.kurzynski@intel.com> Change-Id: I9161984c51037ebb7f34fdb36bee34026d28be03 Signed-off-by: Zbigniew Kurzynski <zbigniew.kurzynski@intel.com>
* Redfish: Add certificate service to manage HTTPS certificatesMarri Devender Rao2019-06-129-61/+927
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implements CertificateService schema to list the actions available. Implements CertificateLocations schema to list the certificates present in the system. Implements CertificateCollection schema to upload/list existing HTTPS certificates Implements Certificate schema to view existing HTTPS certificate Cater for reloading the SSL context after a certificate is uploaded. Fix Certificate signature validation failure At present bmcweb uses the certificate from "/home/root/server.pem" the same is modified to "/etc/ssl/certs/https/server.pem" as phosphor-certificate-manager uses the specified path to install/replace certificates. Bmcweb creates a self-signed certificate when certificate is not present. Catered for creating "/etc/ssl/certs/https/" direcotry structure so that self signed certificate is created in the path. Implements ReplaceCertificate action of Certificate Service for replacing existing HTTPS certificates Cleanup of older self-signed certificate at /home/root/server.pem 1. Tested schema with validator and no issues 2. Privilege map for certificate service is not yet pubished 2. GET on /redfish/v1/CertificateService/ "CertificateService": { "@odata.id": "/redfish/v1/CertificateService" }, 3. 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", "Name": "Certificate Locations" 4.POST on /redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates { Returns contents of certificate "@odata.context": "/redfish/v1/$metadata#Certificate.Certificate", "@odata.id": "/redfish/v1/AccountService/LDAP/Certificates/1", "@odata.type": "#Certificate.v1A_0_0.Certificate", "Id": "1", "Issuer": { ... ... } 5.GET on /redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/ { "@odata.context": "/redfish/v1/$metadata#CertificateCollection.CertificateCollection", "@odata.id": "/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates", "@odata.type": "#CertificateCollection.CertificatesCollection", "Description": "A Collection of HTTPS certificate instances", "Members": [ { "@odata.id": "/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/1" } ], "Members@odata.count": 1, "Name": "HTTPS Certificate Collection" } 6.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" } ], "Certificates@odata.count": 1 }, "Name": "Certificate Locations" } 7.GET on /redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/1 { "@odata.context": "/redfish/v1/$metadata#Certificate.Certificate", "@odata.id": "/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/1", "@odata.type": "#Certificate.v1_0_0.Certificate", "CertificateString": "-----BEGINCERTIFICATE-----\n....\n-----ENDCERTIFICATE-----\n", "CertificateType": "PEM", "Description": "HTTPS Certificate", "Id": "1", "Issuer": { } 8. Verified SSL context is reloaded after a certificate is installed. 9.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 { "@odata.context": "/redfish/v1/$metadata#Certificate.Certificate", "@odata.id": "/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/1", "@odata.type": "#Certificate.v1_0_0.Certificate", "CertificateString": "-----BEGIN CERTIFICATE----END CERTIFICATE-----\n", "Description": "HTTPS certificate", "Id": "1", "Issuer": { } 4. data_https.json file contents { "CertificateString": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDClW1COSab2O0W\nW0SgTzLxQ1Igl4EpbEmTK8CAQ+wI7loTDZ7sZwYdf6yc9TAs/yNKjlJljgedGszv\nbC7sPNpH4FA63kaM6TbBBKTRshwZ3myXiBOOkOBs6w6V7+c7uEPcMFge6/4W1VXD\nReMi016cnPWZsmQyGzpmPM49YNEDZBfdKZ/pLuCYc9L9t706U7FrUSGfM7swB+mC\n8NH9qMixMuWAV9SBvzUWI6p4OCmN8a/F+4lOdbPMVEUqQ0hCBCjGM4qmiy/5Ng6y\n6rKeJlUdmOSTk8ojrNGcOXKh0nRafNEQFkIuoPHt8k5B/Yw2CX6s2BoGwvF+hS03\n+z3qVSw3AgMBAAECggEBAKpe92kybRGr3/rhMrdCYRJJpZEP1nGUdN89QbGMxxAS\n0h84n9vRYNNXRKWxMNtVEWtoLdDpiNUP8Dv59yO1LFIen2DL2e3rDJv4Gu/YCS7F\nR0NuS+FaDIaRURYLFeV+MzyJv75jVvhbFlqByJxngcGS1KAcSApvOLTnrJSlPpy9\n8ec5gnDhdOUND9PaQt8xCqMs1RPpjqvrgRzMEodZoqT5v+b0K1GmsAdbSHNP2mLM\nrqtpFDefiM1YfsTHUtxQykxG2Ipd2jzJ0a8O0qmVqdXcP9J9aqLcmD/2/r96GEV6\n/5qvIBj3SRFobxCiCwfys2XOXfjz2J+BUZzGoZvKeRECgYEA518hT6mn46LhwrTI\nW+Qpi7iTJgOfeLC+Ng855VHVQFED1P3T2lfyfGDyqKI/wV1DJIJmO8iOXerSPnhi\nb7reQkyHj6ERUtuE+6BQ9oTw2QD3EEvzOK2PEH5UipbhVTDnC3fT62Vz2yb3tR8D\n2h0XVJkj/dng9p1Td5aDGMriRRMCgYEA10vTyYqBPjDIEYw/Sc9aQk2kT6x3hrRQ\ngR4xyuI31RTCRD/KpLh/7z4s11Wkr+F9CyASeLbqu6zymlLOlS5p7IUkJ/x2X027\nJWVY1SR+oF3iF3SHiP4XkOVvWOKwIVUhgTjK1+Di6i3AlwIeAOS7VCCP6W0gbnwJ\nyyAAHZ30NM0CgYAqTur4dj2NEqvVvtkkdIRkWEwQF3mByE//8qjTljM4n5fjysaC\nlrJwrAmzbHfcFAHDG1U2eWYPJnFrmvflFnauCPCBAyL308xtdtNXQNgJ1nNXN4wy\nQQp4KaGr9gseWOLm5fKKiPK2kFmbdSBvMgKiJZ6/PKg2cG5i39L5JaBaoQKBgApw\nqOJ7Du1fHDSNonwHzA6vCSq76Efl8olwV2XJNn/ks87vcPov4DRPxYjjpErLGm8x\nrPOhmxxitJj7Lv1Y9NX9VtWBjpPshwi3M2mSjXllVBNjGTdxat8h4RZkV7omEKvd\nfyicxSQp987a0W2lqdfYhGIDYrE43pi1AoxtHmx5AoGBAJSoRy62oZbW6vjfdkuf\nvVnjNfFZwuiPV/X2NT+BhNPe5ZKFtC6gGedHLaIBBD3ItRhGuHZxgWXccPjGHofi\n6DlPdp2NePJgDT2maSjGSiAcHxyXdmW+Ev27NblvAxktoTUcVqSENrKFb+Fh4FXN\nlXiJzOEwAXiP2ZFbMRyNF/MI\n-----END PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIDNzCCAh+gAwIBAgIJAI1Wr/fK5F0GMA0GCSqGSIb3DQEBCwUAMDIxHDAaBgNV\nBAoME29wZW5ibWMtcHJvamVjdC54eXoxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0x\nOTAyMDExMzIyMDhaFw0yOTAxMjkxMzIyMDhaMDIxHDAaBgNVBAoME29wZW5ibWMt\ncHJvamVjdC54eXoxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEB\nBQADggEPADCCAQoCggEBAMKVbUI5JpvY7RZbRKBPMvFDUiCXgSlsSZMrwIBD7Aju\nWhMNnuxnBh1/rJz1MCz/I0qOUmWOB50azO9sLuw82kfgUDreRozpNsEEpNGyHBne\nbJeIE46Q4GzrDpXv5zu4Q9wwWB7r/hbVVcNF4yLTXpyc9ZmyZDIbOmY8zj1g0QNk\nF90pn+ku4Jhz0v23vTpTsWtRIZ8zuzAH6YLw0f2oyLEy5YBX1IG/NRYjqng4KY3x\nr8X7iU51s8xURSpDSEIEKMYziqaLL/k2DrLqsp4mVR2Y5JOTyiOs0Zw5cqHSdFp8\n0RAWQi6g8e3yTkH9jDYJfqzYGgbC8X6FLTf7PepVLDcCAwEAAaNQME4wHQYDVR0O\nBBYEFDDohRZ1+QlC3WdIkOAdBHXVyW/SMB8GA1UdIwQYMBaAFDDohRZ1+QlC3WdI\nkOAdBHXVyW/SMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFN0DWy6\nYPXHzidWMKKyQiJ5diqUv6LbujKOHUk+/LGSoCqcUp8NvmFDKWYP9MxjOAi9TVbs\nRGlIHBl38oSwKUayXBTY/vVeSLls90giUAOjswoRbBBQZvKyfEuFpc1zUsrhGLDC\n/6DuRt9l0DWcMcmP6Yh3jePIIwTr3bpxBGrwNLly8fPf16q4bWRIAcI3ZgLOhsrN\nLfD2kf56oYViM44d54Wa0qjuCfeTnJ46x/lo6w2kB9IzF7lwpipMU7+AG8ijDdaQ\nn8t0nADpv6tNNargLcOTTfJ0/P2PaKxwA1B88NhjlymBnNbz4epIn4T3KyysgS62\nzwqs66LPWoDerzc=\n-----END CERTIFICATE-----", "CertificateType": "PEM", "CertificateUri": { "@odata.id": "/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/1" } } Change-Id: I2acbf8afa06bbf7d029d4971f7ab3b3988f5f060 Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com> Signed-off-by: Ed Tanous <ed.tanous@intel.com>
* Update supported ResetTypes and actionsJason M. Bills2019-06-121-45/+79
| | | | | | | | | | | | | | | | | | | | | | This updates the supported ResetType options and triggers the corresponding state change request on DBus. Tested: Used Postman to send POST commands with various ResetType values and confirmed the appropriate response: ForceOff: System forced off ForceOn: System powered-on ForceRestart: System reset forced GracefulRestart: System gracefully shut down followed by a power-on GracefulShutdown: System gracefully shut down Nmi: Not supported: On: System powered-on PowerCycle: System forced off followed by a power-on PushPowerButton: Not supported Change-Id: Id672b154968fa46c540272c1af6709b04770a849 Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Redfish: Correct PATCH for IPv6 static addressesJohnathan Mantey2019-06-101-12/+4
| | | | | | | | | Manipulating IPv6 static addresses works the same way as IPv4 static addresses. Keep the IPv6StaticAddresses collection, and remove write access from the read-only IPv6Addresses collection. Change-Id: If58c858c676f7ae843e0642800a4083c5df79d1d Signed-off-by: Johnathan Mantey <johnathanx.mantey@intel.com>
* Fix for Certificate Signature validation failureJayanth Othayoth2019-06-071-1/+1
| | | | | | | Resolves openbmc/bmcweb#82 Signed-off-by: Jayanth Othayoth <ojayanth@in.ibm.com> Change-Id: I944c1f9afe03ca58f61fdde34f83f092ff8d8ab2
* Support Processors and its collection for ProcessorType AcceleratorAlpana Kumari2019-06-061-13/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Interface- phosphor-dbus-interfaces/blob/master/xyz/openbmc_project/ Inventory/Item/Accelerator.interface.yaml Redfish schema Status/state is mapped to two properties- Functional and Present xyz.openbmc_project.State.Decorator.OperationalStatus xyz.openbmc_project.Inventory.Item Tested: -- ran Redfish-Service-Validator, All 6 GPUs shows Success -- ran GET on Processors Collection curl -k -H "X-Auth-Token: $bmc_token" -X GET https://${bmc}/redfish/v1/Systems/system/Processors { "@odata.context": "/redfish/v1/$metadata#ProcessorCollection.ProcessorCollection", "@odata.id": "/redfish/v1/Systems/system/Processors/", "@odata.type": "#ProcessorCollection.ProcessorCollection", "Members": [ { "@odata.id": "/redfish/v1/Systems/system/Processors/cpu0" }, { "@odata.id": "/redfish/v1/Systems/system/Processors/cpu1" }, { "@odata.id": "/redfish/v1/Systems/system/Processors/gv100card0" }, { "@odata.id": "/redfish/v1/Systems/system/Processors/gv100card1" }, { "@odata.id": "/redfish/v1/Systems/system/Processors/gv100card2" }, { "@odata.id": "/redfish/v1/Systems/system/Processors/gv100card3" }, { "@odata.id": "/redfish/v1/Systems/system/Processors/gv100card4" }, { "@odata.id": "/redfish/v1/Systems/system/Processors/gv100card5" } ], "Members@odata.count": 8, "Name": "Processor Collection" curl -k -H "X-Auth-Token: $bmc_token" -X GET https://${bmc}/redfish/v1/Systems/system/Processors/gv100card0 { "@odata.context": "/redfish/v1/$metadata#Processor.Processor", "@odata.id": "/redfish/v1/Systems/system/Processors/gv100card0", "@odata.type": "#Processor.v1_3_1.Processor", "Id": "gv100card0", "Name": "Processor", "ProcessorType": "Accelerator", "Status": { "Health": "OK", "State": "Absent" } Change-Id: I5315df80d88d3a04de4b62435a200a718a10cd4c Signed-off-by: Alpana Kumari <alpankum@in.ibm.com>
* Redfish(Network): Add support for IPv6Addresses and IPv6StaticAddressesRavi Teja2019-06-061-60/+445
| | | | | | | | | | | | | | | | | | | Added GET support for IPv6Addresses Added GET and PATCH support for IPv6StaticAddresses Tested by: GET PATCH -D patch.txt -d '{"IPv6StaticAddresses": [{"Address": "2002:905:150e:301:72e2:84ff:fe14:222","PrefixLength": 64}]}' PATCH -D patch.txt -d '{"IPv6StaticAddresses": [{},{"Address": "2002:905:150e:301:72e2:84ff:fe14:333","PrefixLength": 64}]}' PATCH -D patch.txt -d '{"IPv6StaticAddresses": [null,{},{"Address": "2002:905:150e:301:72e2:84ff:fe14:444","PrefixLength": 64}]}' PATCH -D patch.txt -d '{"IPv6StaticAddresses": [{"Address": "2002:905:150e:301:72e2:84ff:fe14:555","PrefixLength": 64},{}]}' PATCH -D patch.txt -d '{"IPv6StaticAddresses": [{},{"Address": "2002:905:150e:301:72e2:84ff:fe14:666"}]}' PATCH -D patch.txt -d '{"IPv6StaticAddresses": [{},{"PrefixLength": 64}]}' Tested with validator and no errors. Change-Id: I7d1314a0c7843aae8425d66119f0d205a5cfac55 Signed-off-by: Ravi Teja <raviteja28031990@gmail.com>
* bmcweb: Fix sensor name identification methodRichard Marian Thomaiyar2019-06-061-7/+5
| | | | | | | | | | | | | Sensor name was calculated based on 5th elemennt is not applicable any more. Get the last token in the path, which is the sensor name, which is used as member_id. Tested: 1. Verified the PATCH method for thermal & power overriding, temperatures, fans & voltages. Overriding works as expected. Change-Id: I08291171496a979f120a57ac0802733007e11871 Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
* Add inventory added and removed to registryJames Feist2019-06-051-0/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add registry entries to aid parsing logs. Tested: Removed entity manager persistence file and got logs like the following: { "@odata.context": "/redfish/v1/$metadata#LogEntry.LogEntry", "@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries/#1557855925", "@odata.type": "#LogEntry.v1_4_0.LogEntry", "Created": "2019-05-14T17:45:25+00:00", "EntryType": "Event", "Id": "1557855925", "Message": "F1UL16RISER1 Board with serial number BQWK63400247 was installed.", "MessageArgs": [ "F1UL16RISER1", "Board", "BQWK63400247" ], "MessageId": "OpenBMC.0.1.InventoryAdded", "Name": "System Event Log Entry", "Severity": "OK" } Change-Id: Id111872121b47395335d8c9e118dc6809a1b7574 Signed-off-by: James Feist <james.feist@linux.intel.com>
* Add basic PowerControl and PowerLimit propertiesEddie James2019-06-052-4/+175
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add code in the power-specific response handler to fetch the Power Limit value for the chassis that implements the Chassis inventory item. Add a special case to the generic sensor handling code to place the total_power value into the PowerControl PowerConsumedWatts field. curl -k https://${bmc}/redfish/v1/Chassis/chassis/Power { "@odata.context": "/redfish/v1/$metadata#Power.Power", "@odata.id": "/redfish/v1/Chassis/chassis/Power", "@odata.type": "#Power.v1_5_2.Power", "Id": "Power", "Name": "Power", "PowerControl": [ { "@odata.id": "/redfish/v1/Chassis/chassis/Power#/PowerControl/", "MemberId": "total_power", "Name": "total power", "PowerConsumedWatts": 269.0, "Status": { "Health": "OK", "State": "Enabled" } } ], "PowerLimit": [ { "LimitInWatts": null } ], Signed-off-by: Eddie James <eajames@linux.ibm.com> Change-Id: I447de59fb44a4ecbe7b47610d915ac22aef90250
* Update fan added / removed to use stringJames Feist2019-05-301-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fan names aren't always fan %d, sometimes there are numbers too, or identifiers like CPU Fan 1. Change the argument to a string. Tested: Launched bmcweb and saw: { "@odata.context": "/redfish/v1/$metadata#LogEntry.LogEntry", "@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries/#1556037042", "@odata.type": "#LogEntry.v1_4_0.LogEntry", "Created": "2019-04-23T16:30:42+00:00", "EntryType": "Event", "Id": "1556037042", "Message": "Fan 1 removed.", "MessageArgs": [ "Fan 1" ], "MessageId": "OpenBMC.0.1.FanRemoved", "Name": "System Event Log Entry", "Severity": "OK" }, { "@odata.context": "/redfish/v1/$metadata#LogEntry.LogEntry", "@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries/#1556037055", "@odata.type": "#LogEntry.v1_4_0.LogEntry", "Created": "2019-04-23T16:30:55+00:00", "EntryType": "Event", "Id": "1556037055", "Message": "Fan 1 inserted.", "MessageArgs": [ "Fan 1" ], "MessageId": "OpenBMC.0.1.FanInserted", "Name": "System Event Log Entry", "Severity": "OK" }, Change-Id: Ic0d07ea1c96ee6a61caa912ecd091c2783f1d963 Signed-off-by: James Feist <james.feist@linux.intel.com>
* Fix DBUS Name For BootSource CdSantosh Puranik2019-05-301-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 9f16b2c1b6b6884482bca304fcaa573caf91d0d6 changed the mapping for redfish boot source 'Cd' to 'xyz.openbmc_project.Control.Boot.Source.Sources.DVD'. However, that mapping does not match what we have in phosphor-dbus-interfaces: 'xyz.openbmc_project.Control.Boot.Source.Sources.ExternalMedia' This commit reverts that mapping back to ExternalMedia. Tested: -- Ran redfish service validator - no errors seen. -- Tested PATCH on BootSourceOverrideTarget with value "Cd" curl -k -H "X-Auth-Token: $bmc_token" -X PATCH https://${bmc}:${port}/redfish/v1/Systems/system -d '{"Boot": {"BootSourceOverrideEnabled": "Continuous", "BootSourceOverrideTarget": "Cd"}}' { "@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" } ] curl -k -H "X-Auth-Token: $bmc_token" -X GET https://${bmc}:${port}/redfish/v1/Systems/system { "@odata.context": "/redfish/v1/$metadata#ComputerSystem.ComputerSystem", "@odata.id": "/redfish/v1/Systems/system", .... .... .... "Boot": { "BootSourceOverrideEnabled": "Continuous", "BootSourceOverrideMode": "Legacy", "BootSourceOverrideTarget": "Cd", "BootSourceOverrideTarget@Redfish.AllowableValues": [ "None", "Pxe", "Hdd", "Cd", "Diags", "BiosSetup" ] }, Change-Id: Ibd1fe3bc2c98dc97422b8dd71f9f95f6e9e25285 Signed-off-by: Santosh Puranik <santosh.puranik@in.ibm.com>
* [Redfish] Fixed PATCH behavior of IndicatorLED in ComputerSystemJennifer Lee2019-05-301-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Patching IndicatorLED to "Lit" was not working. Also modified the response code to 204 no-content for successful PATCH request. Tested: PATCH /redfish/v1/Systems/system HTTP/1.1 { "IndicatorLED": "Lit" } Response: 204 No Content GET /redfish/v1/Systems/system HTTP/1.1 Response: { "@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", "GracefulRestart", "GracefulShutdown" ], "target": "/redfish/v1/Systems/system/Actions/ComputerSystem.Reset" } }, "Boot": { "BootSourceOverrideEnabled": "Disabled", "BootSourceOverrideMode": "Legacy", "BootSourceOverrideTarget": "None", "BootSourceOverrideTarget@Redfish.AllowableValues": [ "None", "Pxe", "Hdd", "Cd", "Diags", "BiosSetup" ] }, "Description": "Computer System", "Id": "system", "IndicatorLED": "Lit", "LogServices": { "@odata.id": "/redfish/v1/Systems/system/LogServices" }, "Memory": { "@odata.id": "/redfish/v1/Systems/system/Memory" }, "MemorySummary": { "Status": { "State": "Disabled" }, "TotalSystemMemoryGiB": 0 }, "Name": "Computer System", "PowerState": "On", "ProcessorSummary": { "Count": 4, "Model": "Intel Xeon processor", "Status": { "State": "Enabled" } }, "Processors": { "@odata.id": "/redfish/v1/Systems/system/Processors" }, "Status": { "State": "Enabled" }, "SystemType": "Physical", "UUID": "13876882-7708-4200-bcf2-2c5681218bc8" } Signed-off-by: Jennifer Lee <jennifer1.lee@intel.com> Change-Id: I8ae152190ee9f122e8580903a9d5e687b2fd9e13
* REST: PUT: return DBus error descriptionLei YU2019-05-291-1/+2
| | | | | | | | | | | | | | | | | | | | | | | The boost::system::error_code returned by the DBus call will contain the DBus error name and description in its error_category, use the category's name and message as REST API's description and message. Tested: Verify the REST API output when trying to set host time while the settings does not allow that: $ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X PUT -d '{"data": 1436655598435272}' https://$bmc/xyz/openbmc_project/time/bmc/attr/Elapsed { "data": { "description": "xyz.openbmc_project.Time.Error.NotAllowed" }, "message": "The operation is not allowed", "status": "error" } Resolves openbmc/bmcweb#83 Change-Id: I90c11c0fc61e55329c809ecb5f948ae041a579d0 Signed-off-by: Lei YU <mine260309@gmail.com>
* [Redfish] Enable PATCH for DHCPv4 properties in EthernetInterface schemaJennifer Lee2019-05-291-1/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DHCPv4 were read-only properties, this code change make following properties to be PATCHable: - DHCPEnabled - UseDNSServers - UseDomainName - UseNTPServers Tested: 1. Check DHCPv4 properties value GET /redfish/v1/Managers/bmc/EthernetInterfaces/<ethID> HTTP/1.1 Response: { ...... "DHCPv4": { "DHCPEnabled": true, "UseDNSServers": true, "UseDomainName": true, "UseNTPServers": true }, ...... } 2. PATCH DHCPv4 PATCH /redfish/v1/Managers/bmc/EthernetInterfaces/eth1 HTTP/1.1 { "DHCPv4": { "DHCPEnabled":false, "UseDNSServers": false, "UseDomainName": false, "UseNTPServers": false } } 3. Check whether DHCPv4 properties are set GET /redfish/v1/Managers/bmc/EthernetInterfaces/<ethID> HTTP/1.1 Response: { ...... "DHCPv4": { "DHCPEnabled": false, "UseDNSServers": false, "UseDomainName": false, "UseNTPServers": false }, ...... } Signed-off-by: Jennifer Lee <jennifer1.lee@intel.com> Change-Id: I125029ae4cdef329edabd18f6aa6a16db6e27d3d
* Add security headers to websocketsEd Tanous2019-05-291-4/+15
| | | | | | | | | | | | | | | | | | | | | | | | websocket connections are by definition temporal, and cannot be cached. Unfortunately, certain security scanners don't see it that way, and flag errors on lack of CSP, XSS, and Content-Type headers when giving a websocket upgrade response. This commit adds the: Strict-Transport-Security Pragma Cache-Control Content-security-policy X-XSS-Protection X-Content-Type-Options Headers to the response when an upgrade occurs, to make the security scanners happy. Tested: Opened the main application, obseved the /subscribe api. Signed-off-by: Ed Tanous <ed.tanous@intel.com> Change-Id: If76dc54f6501b3eb2caf44913d254a8b32d3fd30
* Add ClearLog support for the Redfish Event Log ServiceJason M. Bills2019-05-292-0/+56
| | | | | | | | | | | | | | | | This change adds support for the LogService.ClearLog action to clear the Redfish Event Log. Tested: 1. Added entries to the EventLog 2. Sent the ClearLog action using Postman: /redfish/v1/Systems/system/LogServices/EventLog/Actions/LogService.ClearLog 3. Confirmed that the EventLog was empty 4. Added entries to the EventLog 5. Confirmed that the new entries logged successfully Change-Id: I6ac4ea4aff8d7defbea693a2c8a755a712fb39a6 Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Fix a trailing slash on LogServicesEd Tanous2019-05-291-2/+2
| | | | | | | | | | | | | Redfish takes a not-so-strong opinion on trailing slashes, and while they're kind of allowed, the validator does mention them. This fixes the URI endpoint to not contain a slash. Tested: Ran redfish service validator, and observed no new errors. Signed-off-by: Ed Tanous <ed.tanous@intel.com> Change-Id: I697f99e17fd4564f5f9648b972a1168de78c271d
* Set GraphicalConsole to enabledSantosh Puranik2019-05-291-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit sets GraphicalConsole's ServiceEnabled property to true. The ConnectTypesSupported is set to KVMIP. Tested: -- Ran redfish service validator. No errors seen. Manager.v1_0_0.Manager:GraphicalConsole value: OrderedDict([('ConnectTypesSupported', ['KVMIP']), ('ServiceEnabled', True)]) <class 'collections.OrderedDict'> has Type: Manager.v1_0_0.GraphicalConsole complex is Optional ***going into Complex Manager.v1_0_0.GraphicalConsole:ConnectTypesSupported value: ['KVMIP'] <class 'list'> has Type: Collection(Manager.v1_0_0.GraphicalConnectTypesSupported) enum is Optional permission OData.Permission/Read is Collection Success -- GET on the manager shows the newly added properties. curl -k -H "X-Auth-Token: $bmc_token" -X GET https://${bmc}:${port}/redfish/v1/Managers/bmc { "@odata.context": "/redfish/v1/$metadata#Manager.Manager", "@odata.id": "/redfish/v1/Managers/bmc", .... .... "GraphicalConsole": { "ConnectTypesSupported": [ "KVMIP" ], "ServiceEnabled": true } .... .... Change-Id: I169b581b7dd6b2cef96a2a3eb5f2ce3b1089c8b4 Signed-off-by: Santosh Puranik <santosh.puranik@in.ibm.com>
* Redfish: Move checkDbusPathExist function to dbus utilityRatan Gupta2019-05-232-18/+18
| | | | | | | | | | This function is a utility function which would be needed by other files. TestedBy: ran the redfish validator: PASS Change-Id: I2a0d07f264952f47a724da11f72b15ca5e019d62 Signed-off-by: Ratan Gupta <ratagupt@linux.vnet.ibm.com>
* Redfish(Account): Support the patch for individual properties for LDAPRatan Gupta2019-05-231-0/+477
| | | | | | | | | | | | | | | | | | | | | | | This commit supports the patch of individual properties under LDAP. Tested by: Ldap Config not exist 1) Run the redfish validator tool 2) PATCH the authentication, auth type, username property Keep getting the message what is missing. 3) PATCH with all the required properties. Ldap Config Exist 4) Run the redfish validator tool 5) PATCH the service address property 6) PATCH Auth type, account providertype 7) PATCH user name 8) PATCH multiple properties Detailed test reults are at the following location https://pastebin.com/ibX5nyAc Change-Id: Ib09c7765f86f626d3b74b5ba7a3e7a97cedb4acf Signed-off-by: Ratan Gupta <ratagupt@linux.vnet.ibm.com>
* Redfish: Populate the LDAP property in AccountService schemaRatan Gupta2019-05-231-1/+181
| | | | | | | | | | | | | | | | | | | | With this commit get request on account service gets the LDAP/AD configuration. RemoteRoleMapping under LDAP property will be supported by other commit. TestedBy: 1) Run the redfish - validator => when there is no LDAP configuration => After LDAP Configuration. 2) GET request through redfish /redfish/v1/AccountService Detailed test cases are at the following location. https://pastebin.com/ibX5nyAc Change-Id: I718d1eb4b40d3a626440487ac9a63d8c96721cee Signed-off-by: Ratan Gupta <ratagupt@linux.vnet.ibm.com>
* PID: Add fan profile supportJames Feist2019-05-232-266/+601
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds fan profiles to redfish. This uses the Thermal Mode interface to allow switching between different fan profiles. Only the selected fan profile will be seen. When adding a new controller, they will also be added to the configuration item for that profile. Patching of the profile to switch between supported profiles is also supported. Tested: Could change profiles in redfish. Python test script: def testProfile(): a = { "Oem": { "OpenBmc": { "Fan": { "Profile" : "Acoustic" } } } } return a def dopatch(): resp = requests.patch(address, json=testProfile(), verify=False, auth=("root", "0penBmc")) resp.raise_for_status() Change-Id: Ie2d8582616ed5bde58e3328b21ba8c59437e88ce Signed-off-by: James Feist <james.feist@linux.intel.com>
* [Redfish] Add OCP required properties for ChassisJennifer Lee2019-05-232-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Thermal - Redundancy - Fans Tested: GET /redfish/v1/Chassis/<chassis id>/Thermal HTTP/1.1 Response: { "@odata.context": "/redfish/v1/$metadata#Thermal.Thermal", "@odata.id": "/redfish/v1/Chassis/<chassis id>/Thermal", "@odata.type": "#Thermal.v1_4_0.Thermal", "Fans": [], "Id": "Thermal", "Name": "Thermal", "Redundancy": [], "Temperatures": [ { "@odata.id": "/redfish/v1/Chassis/<chassis id>/Thermal#/Temperatures/0", "@odata.type": "#Thermal.v1_3_0.Temperature", "LowerThresholdCritical": 0, "LowerThresholdNonCritical": 5, "MaxReadingRangeTemp": 127, "MemberId": "BMC_Temp", "MinReadingRangeTemp": -128, "Name": "BMC_Temp", "ReadingCelsius": 34.6870002746582, "Status": { "Health": "OK", "State": "Enabled" }, "UpperThresholdCritical": 115, "UpperThresholdNonCritical": 110 }, ... } Signed-off-by: Jennifer Lee <jennifer1.lee@intel.com> Change-Id: I8fe41e698ef55b02779b04468dee51ebe5561762
* vm_websocket: Add websocket handlerAdriana Kobylak2019-05-213-0/+227
| | | | | | | | | | | | | | | | | | | On receiving a websocket request on endpoint /vm/0/0, connect to the nbd-proxy app and send/receive stdio. Tested: Verified that the host could see the virtual media usb device, mounted it manually and checked the contents of the iso file used for the test were there. To test, used the html and js script: https://github.com/openbmc/jsnbd/tree/master/web and an Ubuntu iso image file. Verified that it worked after closing the websocket (using the stop function from the html file), to check that the processes were cleaned up and freed up for a subsequent request. Change-Id: I0b070310b070c086d67d0ae3e2c165551d6b87cc Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
* Fix 404 handling in Redfish EthernetInterfacesEd Tanous2019-05-201-16/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, when a user requested a network interface that was non-sensical, like: /redfish/v1/Managers/bmc/EthernetInterfaces/foobar/VLANs OR /redfish/v1/Managers/bmc/EthernetInterfaces/foobar They would be presented with a 200-OK, and a partially filled in object. While this doesn't matter much for the casual redfish user, who uses the collection to properly enumerate devices, this causes an issue with security scanners, which think they've found some vulnerability when they can throw whatever injection text they want to in the message, and it shows up in the response. This patchset corrects this, and causes the urls referenced above to properly return 404, and the appropriate "ResourceNotFound" error message. Tested: Attempted both URLs shown above. Both return 404. Ran redfish service validator, observed no errors related to EthernetInterface, or sub nodes. Attempted good URLs, and observed no change to the payload. Signed-off-by: Ed Tanous <ed.tanous@intel.com> Change-Id: Idb2758858d4dbaf421c0cef28b1d5d02402e0ad8
* Redfish: Fix managers UUID mixupEd Tanous2019-05-132-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | In redfish, there are 3 UUIDs. 1. Service root. This is unique to Redfish, and not needed outside the service. It is generated on first startup, and persisted to nonvolatile in the bmcweb_persistent_data.json file. This is the one that is present in the ServiceRoot schema, as well as in the Systems schema under the ServiceEntryPointUUID. 2. Managers. This UUID needs to match the UUID avaialble in IPMI, using the Get Device GUID command. This is generated via the systemd sd_id128_get_machine_app_specific call, with a matching application ID in ipmi. 3. System. This UUID is generated from teh host system. In the case of Power, it comes from settingsd. In the case of x86, it comes from MDRv2. This patchset corrects a few properties to pull from the correct place, after some regressions in the last few weeks that weren't caught right away. Vernon has an oncoming patch to IPMI to correct the IPMI side of this. Signed-off-by: Ed Tanous <ed.tanous@intel.com> Change-Id: I98f3a06ba552c84142aaa749cfd199541a0ae1fd
* Improve Redfish log entry parsingJason M. Bills2019-05-101-9/+25
| | | | | | | | | | | | | This change makes the log entry parsing more robust by checking only for the first space to get the timestamp instead of splitting on all spaces. Tested: Added log entries using sensor override and confirmed that all of them can be correctly displayed in the EventLog LogService. Change-Id: Ic0374f6bf8d5ec052dae84b36ab48d16041c614f Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* [Redfish] Fix incorrect mapping of dbus and Redfish API strings for BootSourceJennifer Lee2019-05-101-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - "Cd" should be mapped to "xyz.openbmc_project.Control.Boot.Source.Sources.DVD" - Adding mapping "Usb" to "xyz.openbmc_project.Control.Boot.Source.Sources.Removable" Tested: PATCH /redfish/v1/Systems/system HTTP/1.1 { "Boot": { "BootSourceOverrideTarget": "Cd" (or "Usb") } } Response: { "@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" } ] } GET /redfish/v1/Systems/system HTTP/1.1 Response: ... Boot: { ... "BootSourceOverrideTarget": "Cd", (or "Usb") ... } ... Signed-off-by: Jennifer Lee <jennifer1.lee@intel.com> Change-Id: Ib5f69fe93d45b4012c089bd48e484ef978a4e57a
* Redfish: Make sensor names more friendlyEd Tanous2019-05-091-1/+2
| | | | | | | | | | | | | | | The primary goal of this patchset is to make sensor names more approachable, in the same way that IPMI does. This replaces the underscores from the sensor path name with spaces. Tested: GET /redfish/v1/Chassis/Solum_1300W_PSU_1/Power Observed sensor "Name" property changed from PSU1_Input_Power to PSU1 Input Power Service validator shows no issues on Thermal or Power Nodes. Signed-off-by: Ed Tanous <ed.tanous@intel.com> Change-Id: I0862f180700502d401cf5a0746a639db5133e631
* Redfish: fix warning in validatorEd Tanous2019-05-092-87/+87
| | | | | | | | | | | | | | | | The validator gives warnings like: URI acquired ends in slash: /redfish/v1/JsonSchemas/Zone These warnings don't actually result in warnings, because the trailing slash has always been a question in the spec, but we might as well do it correctly, even if most of the tools don't take an issue with it. Tested: Ran service validator, saw no new failures, and observed no errors mentioned above. Signed-off-by: Ed Tanous <ed.tanous@intel.com> Change-Id: I184422d7a14838339253c945d7a0c91878093e17
* Redfish(Network): Implemented PATCH of Nameservers arrayRAJESWARAN THILLAIGOVINDAN2019-05-091-2/+11
| | | | | | | | | | | | | | | | | | | | | Testing: "NameServers": [], "NameServers@Message.ExtendedInfo": [ { "@odata.type": "/redfish/v1/$metadata#Message.v1_0_0.Message", "Message": "The property NameServers is a read only property and cannot be assigned a value.", "MessageArgs": [ "NameServers" ], "MessageId": "Base.1.4.0.PropertyNotWritable", "Resolution": "Remove the property from the request body and resubmit the request if the operation failed.", "Severity": "Warning" } ] Change-Id: I12b8cb0ad9b8ad83371ee1d834f38e7537cc7b61 Signed-off-by: RAJESWARAN THILLAIGOVINDAN <rajeswgo@in.ibm.com>
* simpleupdate: Move code around for future re-useAndrew Geissler2019-05-091-140/+143
| | | | | | | | | | | | A lot of the existing code for the UpdateService path can be used for SimpleUpdate. Move the common code into static functions so that both paths can call them. Tested: Verified good path code update still works against UpdateService Change-Id: Ie69b2bdc7b286b9d0596a2ca193810270a3f7dbb Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
* Redfish: Remove BMCWEB_ENABLE_REDFISH_ONE_CHASSISShawn McCarney2019-05-097-122/+3
| | | | | | | | | | | | | | | Removed the BMCWEB_ENABLE_REDFISH_ONE_CHASSIS #define. The new support for finding chassis sensors via associations is now used on all systems. Test Plan: https://gist.github.com/smccarney/f5b4783d8cf41a486ceff9b941b1ba9a Tested: Verified the Chassis, Power, and Thermal output was valid on a Witherspoon system. Verified sensor associations on Witherspoon work with bmcweb implementation. Ran Redfish Service Validator. Change-Id: I975f79da2c9de63e4ddd155d39ea872ca9fbffa9 Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
* Acquire chassis sensors using the sensor association DBus itemJohnathan Mantey2019-05-094-173/+304
| | | | | | | | | | | | | | | | | | | | | | Each entry in the Chassis Collection has, or will have, a sensors DBus item that lists the sensors that Chassis node contains. This change queries that DBus entry, and uses the information to collect the Thermal or Power sensor information. Tested: GET https://10.243.48.59/redfish/v1/Chassis/WP_Baseboard GET https://10.243.48.59/redfish/v1/Chassis/WP_Baseboard/Power GET https://10.243.48.59/redfish/v1/Chassis/WP_Baseboard/Thermal On 2 representative systems, one with a chassis, and one without. Observed correct behavior for both. Ran Redfish service validator. Observed no errors in Chassis, Thermal, Power, or ChassisCollection schemas. Change-Id: I01fcb3707396e2e33345bf125d8ae95170088a2a Signed-off-by: Johnathan Mantey <johnathanx.mantey@intel.com> Signed-off-by: Ed Tanous <ed.tanous@intel.com>
* Use syslog for Redfish messagesJason M. Bills2019-05-081-140/+131
| | | | | | | | | | | | | | | | | | | Limitations were discovered after the journal was made persistent that reduce the benefits of using it directly for persistent event logs. As an alternative, we will leave the journal volatile and use rsyslog to persist only the event logs. This change switches to the syslog files for Redfish event messages instead of looking directly in the journal. Tested: Navigated to "/redfish/v1/Systems/system/LogServices/EventLog/Entries" and confirmed that all of the stored Event Log Entries are returned. Change-Id: Ib0aebda68eb95bb171fccd208350c3d073787a13 Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Construct Redfish messages using the Message RegistryJason M. Bills2019-05-081-19/+72
| | | | | | | | | | | | | | | | Instead of using the message and severity from the journal, this change allows Redfish to search for the MessageId in the Message Registries to construct the message. This will provide more accurate Redfish messages and severities since they come from a single source. Tested: Logged Redfish events using new MessageIds and confirmed that the correct message from the Message Registry is displayed rather than the message from the journal. Change-Id: I294593647998c988b36ffccaf95a69cbeab3f92e Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
* Remove the static OpenBMC Message Registry fileJason M. Bills2019-05-085-143/+1334
| | | | | | | | | | | | This change removes the static OpenBMC Message Registry file and replaces it with a compile-time structure. Tested: Verified the OpenBMC Message registry is correctly returned from the existing endpoints without using the static files. Change-Id: I60ab3ce0d23c9ac7e91ebb85f445fb9ca731983d Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
OpenPOWER on IntegriCloud