tree 9f3fe62a2058ec8749704373f07df1a8c49e4b6d
parent 4d15fabe543c7b03e1254a7544e840596eba5612
author Nick Hsieh <hnick@google.com> 1779519205 +0000
committer Nick Hsieh <hnick@google.com> 1779665685 -0700

gbmcweb master: SRCREV bump 4588266895..90de0e8147

Alex Lai (1):
      Add GPIO probing support to EntityConfigJsonImpl.

David Tang (5):
      Support device instantiation and driver mapping for I2C-based ADC sensors
      Support allow_sensor_creation_failure flag in AdcSensor
      Add support for MAX11611 ADC sensor type
      Add support for ADS1015 ADC sensor.
      Support per-sensor append mode in tlBMC SensorCollection

Edward Lee (5):
      Add Redfish Endpoint for Syslog Certificate
      Remove unused uri_to_entity library.
      Add ManagedBy Field to EM Config to Configure Manager for the Entity
      Expose ManagedBy for Chassis in Redfish
      Comment Out Manager Test Until Manager Is Updated

Hao Zhou (7):
      Add rx_packets check to NCSI cable presence detection
      Add /redfish/tlbmc/Debug/FruCollector endpoint
      Fix TSAN data race in FruCollector by explicitly stopping the scheduler in destructor.
      Upgrade logging in ResourceStateManager from DLOG(INFO) to LOG(WARNING).
      Add unit tests for Redfish BIOS service and refactor for testability
      Add unit tests for Redfish BIOS service and refactor for testability
      Remove systemd sd-bus.h include path transformations.

James Zheng (4):
      Integrate EntityConfig into zone manager
      Optimize 1st-order ADRC
      Create failsafe mode for multi-rotor fans
      Fix failsafe logger
      Expose `FailSafe` status in zone manager JSON

Jane Kramer (1):
      tlbmc: Change dynamic IFS testing filename to scan.bin

Nan Zhou (2):
      Reduce log spam for true-hitless-status-update.service failures.
      Remove untested and unused Certificate POST actions from CertificateService.

Nathaniel Zietlow (1):
      Add temporary fix for unit test.

Rutu Patel (2):
      This change cleans up unused imports and deprecated testing libraries across packages.
      Add multihost support for SMBIOS inventory collection in tlbmc.

Siddharth Golechha (1):
      Unbounded Recursion Denial-of-Service via Query Parameter Expand Levels in tlBMC.

Willy Tu (2):
      Refactor gRPC TLS credential options to use explicit certificate providers
      Automated rollback of commit 0fb51554cc3eedb5fb56c17078c82d82f5969163.

Yuli Fiterman (1):
      Use polled timestamp for shared memory sensors

gBMC Team (28):
      Add sensor collector support for a new telemetry version.
      Remove unused uri_to_entity library.
      Append PowerFaultLog to LogServices collection.
      Add support for 16-bit I2C EEPROM reads in FruScannerI2c.
      Add support in gbmc-hal for a new vEEPROM version
      [tlbmc] Support Gnic VEEPROM telemetry v4 SSD temperature.
      Refactor Location Context Population
      Consolidate RdeAggregationSettings into One Config
      Automated Code Change
      Automated Code Change
      Automated Code Change
      Automated Code Change
      Add NVMe Metric Refresh Action and UTC Timestamps
      Add NVMe Metric Refresh Action and UTC Timestamps
      Support Skipping Chassis Collection Aggregation
      Add Extra RDE Aggregation Settings
      Replace GoogleDrive.Secure action with SetUserPassword and SetMasterPassword.
      Run `clang-format` on C++ files in `ecclesia/lib` `file` and `http` utilities.
      Add machine name length check (<=27) in the install offline node entity API.
      The expected read length must be in the first byte for an I2C block read.
      Run `clang-format` on C++ files in `io`, 'apifs', and `devpath` utilities.
      Add root-level StorageController routes.
      Automated Code Change
      Automated Code Change
      Automated Code Change
      Change nonce encoding from Base64 to Hexadecimal.
      Set bmcweb service type to notify
      Automated Code Change

Fusion-Link: fusion2 N/A
Tested: presubmit at
https://gbmc-review.git.corp.google.com/c/meta-gbmc-staging/+/89314/1

platform5: https://fusion2.corp.google.com/ef4f9680-de2e-39ad-8b0c-a0671d897ce6 (Passed)
platform15:  https://fusion2.corp.google.com/22e4b0bf-c95f-30c7-a854-4c41a0fd7e98 (1 failure, no regression)
platform18: https://fusion2.corp.google.com/75ac1b51-7a55-39d5-a610-9b21e2b35046 (Passed)
platform17: https://fusion2.corp.google.com/8b05668f-ba38-3266-8370-ae2b33abe1f7
platform11+ext: https://fusion2.corp.google.com/0d99fbda-5c0f-3359-b053-943d653282df (Passed)
platform11: https://fusion2.corp.google.com/bedda051-908a-3844-ac16-2070c780ba95 (Passed)

Google-Bug-Id: 500941139
Google-Bug-Id: 514897669
Change-Id: Ia39fc8da3833c749f5ce43a890398c532e023f67
Signed-off-by: Nick Hsieh <hnick@google.com>
