Remove use_dhcp_ntp related code

Dhcp ntp related functions are now implemented by new network daemon
(phosphor-network-manager), so time manager does not need to handle the
setting anymore.
Remove all the code related to use_dhcp_ntp.

Change-Id: Iea7f60dbe9558193585d3cd553dec15bbfe2aaa4
Signed-off-by: Lei YU <mine260309@gmail.com>
2 files changed
tree: 8526aba151be8c6ab38f4338747941ca2d8e11b9
  1. test/
  2. xyz/
  3. .gitignore
  4. bmc_epoch.cpp
  5. bmc_epoch.hpp
  6. bmc_time_change_listener.hpp
  7. bootstrap.sh
  8. configure.ac
  9. elog-errors.hpp
  10. epoch_base.cpp
  11. epoch_base.hpp
  12. host_epoch.cpp
  13. host_epoch.hpp
  14. LICENSE
  15. main.cpp
  16. Makefile.am
  17. manager.cpp
  18. manager.hpp
  19. property_change_listener.hpp
  20. README.md
  21. settings.cpp
  22. settings.hpp
  23. types.hpp
  24. utils.cpp
  25. utils.hpp
README.md

Introduction

phosphor-time-manager is the time manager service that implements dbus interface xyz/openbmc_project/Time/EpochTime.interface.yaml. User can get or set the BMC's or HOST's time via this interface.

General usage

The service xyz.openbmc_project.Time.Manager provides two objects on dbus:

  • /xyz/openbmc_project/time/bmc
  • /xyz/openbmc_project/time/host

where each object implements interface xyz.openbmc_project.Time.EpochTime.

User can directly get or set the property Elasped of the objects to get or set the time. For example on an authenticated session:

  • To get BMC's time:
    ### 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
    
  • To set HOST's time:
    ### 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
    

Time settings

Getting BMC or HOST time is always allowed, but setting the time may not be allowed depending on below two settings in settings manager.

  • TimeSyncMethod
    • NTP: Time is set via NTP server.
    • MANUAL: Time is set manually.
  • TimeOwner
    • BMC: BMC owns the time and can set the time.
    • HOST: Host owns the time and can set the time.
    • SPLIT: BMC and Host owns separate time.
    • BOTH: Both BMC and Host can set the time.

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

Pgood

When host is on (pgood == 1), 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 host is off (pgood == 0), the saved mode/owner are read from persistent storage and are applied.

Note: user can set the time mode and owner in settings daemon at any time, but time manager applying them is governed by the above condition.