builtins.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package builtins
  2. import (
  3. "runtime"
  4. "github.com/docker/docker/api"
  5. apiserver "github.com/docker/docker/api/server"
  6. "github.com/docker/docker/daemon/networkdriver/bridge"
  7. "github.com/docker/docker/dockerversion"
  8. "github.com/docker/docker/engine"
  9. "github.com/docker/docker/events"
  10. "github.com/docker/docker/pkg/parsers/kernel"
  11. )
  12. func Register(eng *engine.Engine) error {
  13. if err := daemon(eng); err != nil {
  14. return err
  15. }
  16. if err := remote(eng); err != nil {
  17. return err
  18. }
  19. if err := events.New().Install(eng); err != nil {
  20. return err
  21. }
  22. if err := eng.Register("version", dockerVersion); err != nil {
  23. return err
  24. }
  25. return nil
  26. }
  27. // remote: a RESTful api for cross-docker communication
  28. func remote(eng *engine.Engine) error {
  29. if err := eng.Register("serveapi", apiserver.ServeApi); err != nil {
  30. return err
  31. }
  32. return eng.Register("acceptconnections", apiserver.AcceptConnections)
  33. }
  34. // daemon: a default execution and storage backend for Docker on Linux,
  35. // with the following underlying components:
  36. //
  37. // * Pluggable storage drivers including aufs, vfs, lvm and btrfs.
  38. // * Pluggable execution drivers including lxc and chroot.
  39. //
  40. // In practice `daemon` still includes most core Docker components, including:
  41. //
  42. // * The reference registry client implementation
  43. // * Image management
  44. // * The build facility
  45. // * Logging
  46. //
  47. // These components should be broken off into plugins of their own.
  48. //
  49. func daemon(eng *engine.Engine) error {
  50. return eng.Register("init_networkdriver", bridge.InitDriver)
  51. }
  52. // builtins jobs independent of any subsystem
  53. func dockerVersion(job *engine.Job) engine.Status {
  54. v := &engine.Env{}
  55. v.SetJson("Version", dockerversion.VERSION)
  56. v.SetJson("ApiVersion", api.APIVERSION)
  57. v.SetJson("GitCommit", dockerversion.GITCOMMIT)
  58. v.Set("GoVersion", runtime.Version())
  59. v.Set("Os", runtime.GOOS)
  60. v.Set("Arch", runtime.GOARCH)
  61. if kernelVersion, err := kernel.GetKernelVersion(); err == nil {
  62. v.Set("KernelVersion", kernelVersion.String())
  63. }
  64. if _, err := v.WriteTo(job.Stdout); err != nil {
  65. return job.Error(err)
  66. }
  67. return engine.StatusOK
  68. }