Skip to content

Commit 4f1669c

Browse files
henrybarretogustavosbarreto
authored andcommitted
chore(agent): remove duplication on docker client initialization
1 parent 820dada commit 4f1669c

File tree

2 files changed

+23
-16
lines changed

2 files changed

+23
-16
lines changed

pkg/agent/connector/docker.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func (d *DockerConnector) Start(ctx context.Context, id string, name string) {
8282
d.mu.Unlock()
8383

8484
privateKey := fmt.Sprintf("%s/%s.key", d.privateKeys, id)
85-
go initContainerAgent(ctx, Container{
85+
go initContainerAgent(ctx, d.cli, Container{
8686
ID: id,
8787
Name: name,
8888
ServerAddress: d.server,
@@ -155,7 +155,7 @@ func (d *DockerConnector) Listen(ctx context.Context) error {
155155
}
156156

157157
// initContainerAgent initializes the agent for a container.
158-
func initContainerAgent(ctx context.Context, container Container) {
158+
func initContainerAgent(ctx context.Context, cli *dockerclient.Client, container Container) {
159159
agent.AgentPlatform = "connector"
160160
agent.AgentVersion = ConnectorVersion
161161

@@ -178,7 +178,20 @@ func initContainerAgent(ctx context.Context, container Container) {
178178
"version": agent.AgentVersion,
179179
}).Info("Connector container started")
180180

181-
ag, err := agent.NewAgentWithConfig(cfg, agent.NewConnectorMode(cfg.PreferredIdentity))
181+
mode, err := agent.NewConnectorMode(cli, container.ID)
182+
if err != nil {
183+
log.WithError(err).WithFields(log.Fields{
184+
"id": container.ID,
185+
"identity": cfg.PreferredIdentity,
186+
"hostname": cfg.PreferredHostname,
187+
"tenant_id": cfg.TenantID,
188+
"server_address": cfg.ServerAddress,
189+
"timestamp": time.Now(),
190+
"version": agent.AgentVersion,
191+
}).Fatal("Failed to create connector mode")
192+
}
193+
194+
ag, err := agent.NewAgentWithConfig(cfg, mode)
182195
if err != nil {
183196
log.WithError(err).WithFields(log.Fields{
184197
"id": container.ID,

pkg/agent/modes.go

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -81,23 +81,24 @@ func (m *HostMode) GetInfo() (*Info, error) {
8181
// responsible for the SSH server, but the authentication and authorization is made by either the conainer
8282
// internals, `passwd` or `shadow`, or by the ShellHub API.
8383
type ConnectorMode struct {
84+
cli *dockerclient.Client
8485
serverMode *connector.Mode
8586
identity string
8687
}
8788

88-
func NewConnectorMode(identity string) Mode {
89+
func NewConnectorMode(cli *dockerclient.Client, identity string) (Mode, error) {
8990
return &ConnectorMode{
9091
identity: identity,
91-
}
92+
cli: cli,
93+
}, nil
9294
}
9395

9496
var _ Mode = new(ConnectorMode)
9597

9698
func (m *ConnectorMode) Serve(agent *Agent) {
97-
cli, _ := dockerclient.NewClientWithOpts(dockerclient.FromEnv, dockerclient.WithAPIVersionNegotiation())
9899
m.serverMode = &connector.Mode{
99-
Authenticator: *connector.NewAuthenticator(agent.cli, cli, agent.authData, &agent.Identity.MAC),
100-
Sessioner: *connector.NewSessioner(&agent.Identity.MAC, cli),
100+
Authenticator: *connector.NewAuthenticator(agent.cli, m.cli, agent.authData, &agent.Identity.MAC),
101+
Sessioner: *connector.NewSessioner(&agent.Identity.MAC, m.cli),
101102
}
102103

103104
// NOTICE: When the agent is running in `Connector` mode, we need to identify the container ID to maintain the
@@ -117,14 +118,7 @@ func (m *ConnectorMode) Serve(agent *Agent) {
117118
}
118119

119120
func (m *ConnectorMode) GetInfo() (*Info, error) {
120-
cli, err := dockerclient.NewClientWithOpts(dockerclient.FromEnv, dockerclient.WithAPIVersionNegotiation())
121-
if err != nil {
122-
return nil, err
123-
}
124-
125-
defer cli.Close()
126-
127-
info, err := cli.ContainerInspect(context.Background(), m.identity)
121+
info, err := m.cli.ContainerInspect(context.Background(), m.identity)
128122
if err != nil {
129123
return nil, err
130124
}

0 commit comments

Comments
 (0)