| commit | 5b746c79cd507b45aa1dc0ee954e07459d4115f4 | [log] [tgz] |
|---|---|---|
| author | Patrick Williams <patrick@stwcx.xyz> | Wed May 13 11:49:35 2020 -0500 |
| committer | Patrick Williams <patrick@stwcx.xyz> | Wed May 13 11:49:35 2020 -0500 |
| tree | 4c64efd586cb7d94884c7cf880a0257f3ac1d9f7 | |
| parent | 248a709c83e80f81a687c971b79ff292c4778fb0 [diff] |
sdbusplus: remove deprecated variant_ns Signed-off-by: Patrick Williams <patrick@stwcx.xyz> Change-Id: I4c8f4a9e1d18effb21cbbfe784e695832fa4ff4f
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 or HOST's time via this interface.
The service xyz.openbmc_project.Time.Manager provides two objects 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/host 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/host/attr/Elapsed
Getting BMC or HOST 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 | Owner | Set BMC Time | Set Host Time |
|---|---|---|---|
| NTP | BMC | Fail to set | Not allowed |
| NTP | HOST | Not allowed | Not allowed |
| NTP | SPLIT | Fail to set | OK |
| NTP | BOTH | Fail to set | Not allowed |
| MANUAL | BMC | OK | Not allowed |
| MANUAL | HOST | Not allowed | OK |
| MANUAL | SPLIT | OK | OK |
| MANUAL | BOTH | OK | 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
To change owner
### With busctl on BMC
busctl set-property xyz.openbmc_project.Settings \
/xyz/openbmc_project/time/owner xyz.openbmc_project.Time.Owner \
TimeOwner s xyz.openbmc_project.Time.Owner.Owners.BMC
### 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.Owner.Owners.BMC" }' \
https://${BMC_IP}/xyz/openbmc_project/time/owner/attr/TimeOwner
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.
When the host is on, the changes of the above time mode/owner are not applied but deferred. The changes of the mode/owner are saved to persistent storage.
When the host is off, the saved mode/owner are read from persistent storage and are applied.
Note: A user can set the time mode and owner in the settings daemon at any time, but the time manager applying them is governed by the above condition.