contexts.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package proxy
  2. import (
  3. "context"
  4. "github.com/docker/api/config"
  5. "github.com/docker/api/context/store"
  6. contextsv1 "github.com/docker/api/protos/contexts/v1"
  7. )
  8. type contextsProxy struct {
  9. configDir string
  10. }
  11. func (cp *contextsProxy) SetCurrent(ctx context.Context, request *contextsv1.SetCurrentRequest) (*contextsv1.SetCurrentResponse, error) {
  12. if err := config.WriteCurrentContext(cp.configDir, request.GetName()); err != nil {
  13. return &contextsv1.SetCurrentResponse{}, err
  14. }
  15. return &contextsv1.SetCurrentResponse{}, nil
  16. }
  17. func (cp *contextsProxy) List(ctx context.Context, request *contextsv1.ListRequest) (*contextsv1.ListResponse, error) {
  18. s := store.ContextStore(ctx)
  19. configFile, err := config.LoadFile(cp.configDir)
  20. if err != nil {
  21. return nil, err
  22. }
  23. contexts, err := s.List()
  24. if err != nil {
  25. return &contextsv1.ListResponse{}, err
  26. }
  27. result := &contextsv1.ListResponse{}
  28. for _, c := range contexts {
  29. result.Contexts = append(result.Contexts, &contextsv1.Context{
  30. Name: c.Name,
  31. ContextType: c.Type(),
  32. Current: c.Name == configFile.CurrentContext,
  33. })
  34. }
  35. return result, nil
  36. }