@@ -40,6 +40,7 @@ type ComposeProject = compose.ComposeProject
4040type DockerClient struct {
4141 Cli * client.Client
4242 Ctx context.Context
43+ ContextName string
4344
4445 // Managers
4546 Container * container.Manager
@@ -55,7 +56,7 @@ func NewDockerClient(contextName string) (*DockerClient, error) {
5556 logger , cleanup := initLogger ()
5657 defer cleanup ()
5758
58- opts , err := resolveClientOpts (contextName , logger )
59+ ctxName , opts , err := resolveClientOpts (contextName , logger )
5960 if err != nil {
6061 return nil , err
6162 }
@@ -67,15 +68,16 @@ func NewDockerClient(contextName string) (*DockerClient, error) {
6768 ctx := context .Background ()
6869
6970 return & DockerClient {
70- Cli : cli ,
71- Ctx : ctx ,
72- Container : container .NewManager (cli , ctx ),
73- Image : image .NewManager (cli , ctx ),
74- Volume : volume .NewManager (cli , ctx ),
75- Network : network .NewManager (cli , ctx ),
76- Service : service .NewManager (cli , ctx ),
77- Node : node .NewManager (cli , ctx ),
78- Compose : compose .NewManager (cli , ctx ),
71+ Cli : cli ,
72+ Ctx : ctx ,
73+ ContextName : ctxName ,
74+ Container : container .NewManager (cli , ctx ),
75+ Image : image .NewManager (cli , ctx ),
76+ Volume : volume .NewManager (cli , ctx ),
77+ Network : network .NewManager (cli , ctx ),
78+ Service : service .NewManager (cli , ctx ),
79+ Node : node .NewManager (cli , ctx ),
80+ Compose : compose .NewManager (cli , ctx ),
7981 }, nil
8082}
8183
@@ -87,22 +89,23 @@ func initLogger() (*log.Logger, func()) {
8789 return log .New (f , "d4s-dao: " , log .LstdFlags ), func () { f .Close () }
8890}
8991
90- func resolveClientOpts (flagContext string , logger * log.Logger ) ([]client.Opt , error ) {
92+ func resolveClientOpts (flagContext string , logger * log.Logger ) (string , []client.Opt , error ) {
9193 opts := []client.Opt {
9294 client .WithAPIVersionNegotiation (),
9395 }
9496
9597 // 1. Flag takes precedence
9698 if flagContext != "" {
9799 logger .Printf ("Explicit context requested via flag: %s" , flagContext )
98- return loadSpecificContext (flagContext , logger , opts )
100+ opts , err := loadSpecificContext (flagContext , logger , opts )
101+ return flagContext , opts , err
99102 }
100103
101104 // 2. DOCKER_HOST takes precedence if no flag
102105 if h := os .Getenv ("DOCKER_HOST" ); h != "" {
103106 logger .Printf ("DOCKER_HOST set to %s, using FromEnv" , h )
104107 opts = append (opts , client .FromEnv )
105- return opts , nil
108+ return "env" , opts , nil
106109 }
107110
108111 // 3. Identify Target Context
@@ -122,11 +125,12 @@ func resolveClientOpts(flagContext string, logger *log.Logger) ([]client.Opt, er
122125 if targetCtx == "default" {
123126 logger .Println ("Context is default, using FromEnv" )
124127 opts = append (opts , client .FromEnv )
125- return opts , nil
128+ return "default" , opts , nil
126129 }
127130
128131 // 4. Load Specific Context
129- return loadSpecificContext (targetCtx , logger , opts )
132+ opts , err := loadSpecificContext (targetCtx , logger , opts )
133+ return targetCtx , opts , err
130134}
131135
132136func loadSpecificContext (targetCtx string , logger * log.Logger , baseOpts []client.Opt ) ([]client.Opt , error ) {
@@ -304,11 +308,11 @@ func (d *DockerClient) GetComposeConfig(projectName string) (string, error) {
304308
305309// Common/Stats wrappers
306310func (d * DockerClient ) GetHostStats () (common.HostStats , error ) {
307- return common .GetHostStats (d .Cli , d .Ctx )
311+ return common .GetHostStats (d .Cli , d .Ctx , d . ContextName )
308312}
309313
310314func (d * DockerClient ) GetHostStatsWithUsage () (common.HostStats , error ) {
311- return common .GetHostStatsWithUsage (d .Cli , d .Ctx )
315+ return common .GetHostStatsWithUsage (d .Cli , d .Ctx , d . ContextName )
312316}
313317
314318func (d * DockerClient ) Inspect (resourceType , id string ) (string , error ) {
0 commit comments