This PR adds a store to the CLI, that can be leveraged to persist and retrieve credentials for various API endpoints, as well as context-specific settings (initially, default stack orchestrator, but we could expand that). This comes with the logic to persist and retrieve endpoints configs for both Docker and Kubernetes APIs. Signed-off-by: Simon Ferquel <simon.ferquel@docker.com>
28 lines
862 B
Go
28 lines
862 B
Go
package command
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/docker/cli/cli/context/store"
|
|
)
|
|
|
|
// DockerContext is a typed representation of what we put in Context metadata
|
|
type DockerContext struct {
|
|
Description string `json:"description,omitempty"`
|
|
StackOrchestrator Orchestrator `json:"stack_orchestrator,omitempty"`
|
|
}
|
|
|
|
// GetDockerContext extracts metadata from stored context metadata
|
|
func GetDockerContext(storeMetadata store.ContextMetadata) (DockerContext, error) {
|
|
if storeMetadata.Metadata == nil {
|
|
// can happen if we save endpoints before assigning a context metadata
|
|
// it is totally valid, and we should return a default initialized value
|
|
return DockerContext{}, nil
|
|
}
|
|
res, ok := storeMetadata.Metadata.(DockerContext)
|
|
if !ok {
|
|
return DockerContext{}, errors.New("context metadata is not a valid DockerContext")
|
|
}
|
|
return res, nil
|
|
}
|