| commit | 0a70452ab01fd76f852c7bd656ae4b36cac5f222 | [log] [tgz] |
|---|---|---|
| author | George Liu <liuxiwei@inspur.com> | Mon Apr 13 14:51:40 2020 +0800 |
| committer | George Liu <liuxiwei@inspur.com> | Tue Jun 16 16:34:20 2020 +0800 |
| tree | c78f82e4a5b849a4e316ae0f12b372dfb294bda3 | |
| parent | 3de9698dae2d251cba482d4ccc78d58d2a02d564 [diff] |
Remove Deferred Updates Remove deferred consumption of settings Manual/NTP and allow instant consumption. Tested: Manually set the timeMode to NTP on the WEB and successfully. busctl get-property xyz.openbmc_project.Settings /xyz/openbmc_project/time/sync_method xyz.openbmc_project.Time.Synchronization TimeSyncMethod s "xyz.openbmc_project.Time.Synchronization.Method.NTP" Manually set the date time successfully by D-Bus when timeMode is MANUAL busctl set-property xyz.openbmc_project.Time.Manager /xyz/openbmc_project/time/bmc xyz.openbmc_project.Time.EpochTime Elapsed t 1514765953791262 Manually set the date time failed by D-Bus when timeMode is NTP. busctl set-property xyz.openbmc_project.Time.Manager /xyz/openbmc_project/time/bmc xyz.openbmc_project.Time.EpochTime Elapsed t 1514765953791262 Failed to set property Elapsed on interface xyz.openbmc_project.TIme.EpochTime: The operation failed ~# journalctl -b | grep timemanager Jan 01 00:15:26 fp5280g2 phosphor-timemanager[309]: Error in setting system time Jan 01 00:15:26 fp5280g2 phosphor-timemanager[309]: The operation failed Refer: https://lists.ozlabs.org/pipermail/openbmc/2020-April/021409.html Signed-off-by: George Liu <liuxiwei@inspur.com> Change-Id: I7be25a9d0f56615bad6800a0b07df7f84fc0acc3
phosphor-time-manager is the time manager service that implements D-Bus interface xyz/openbmc_project/Time/EpochTime.interface.yaml. The user can get or set the BMC's time via this interface.
The service xyz.openbmc_project.Time.Manager provides an object on D-Bus:
where each object implements interface xyz.openbmc_project.Time.EpochTime.
The user can directly get or set the property Elapsed of the objects to get or set the time. For example on an authenticated session:
### With busctl on BMC
busctl get-property xyz.openbmc_project.Time.Manager \
/xyz/openbmc_project/time/bmc xyz.openbmc_project.Time.EpochTime Elapsed
### With REST API on remote host
curl -b cjar -k https://${BMC_IP}/xyz/openbmc_project/time/bmc
### With busctl on BMC
busctl set-property xyz.openbmc_project.Time.Manager \
/xyz/openbmc_project/time/bmc xyz.openbmc_project.Time.EpochTime \
Elapsed t <value-in-microseconds>
### With REST API on remote host
curl -b cjar -k -H "Content-Type: application/json" -X PUT \
-d '{"data": 1487304700000000}' \
https://${BMC_IP}/xyz/openbmc_project/time/bmc/attr/Elapsed
Getting BMC time is always allowed, but setting the time may not be allowed depending on the below two settings in the settings manager.
A summary of which cases the time can be set on BMC or HOST:
| Mode | Set BMC Time |
|---|---|
| NTP | Fail to set |
| MANUAL | OK |
To set an NTP server:
### With busctl on BMC
busctl set-property xyz.openbmc_project.Network \
/xyz/openbmc_project/network/eth0 \
xyz.openbmc_project.Network.EthernetInterface NTPServers \
as 1 "<ntp_server>"
### With REST API on remote host
curl -c cjar -b cjar -k -H "Content-Type: application/json" -X PUT -d \
'{"data": ["<ntp_server>"] }' \
https://${BMC_IP}/xyz/openbmc_project/network/eth0/attr/NTPServers
To go into NTP mode
### With busctl on BMC
busctl set-property xyz.openbmc_project.Settings \
/xyz/openbmc_project/time/sync_method xyz.openbmc_project.Time.Synchronization \
TimeSyncMethod s "xyz.openbmc_project.Time.Synchronization.Method.NTP"
### With REST API on remote host
curl -c cjar -b cjar -k -H "Content-Type: application/json" -X PUT -d \
'{"data": "xyz.openbmc_project.Time.Synchronization.Method.NTP" }' \
https://${BMC_IP}/xyz/openbmc_project/time/sync_method/attr/TimeSyncMethod
Starting from OpenBMC 2.6 (with systemd v239), systemd's timedated introduces a new beahvior that it checks the NTP services' status during setting time, instead of checking the NTP setting:
In OpenBMC 2.4 (with systemd v236), the above will always succeed.
This results in openbmc/openbmc#3459, and the related test cases are updated to cooperate with this behavior change.