Skip to content

Commit f9488b3

Browse files
author
Richa Gangwar
committed
Change AgentConfig to WSClientMinAgentConfig, export cfg in ClientServerImpl struct, use logger instead of seelog
1 parent ff1c450 commit f9488b3

File tree

2 files changed

+31
-30
lines changed

2 files changed

+31
-30
lines changed

ecs-agent/wsclient/client.go

+30-29
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ import (
4141

4242
"github.com/aws/aws-sdk-go/aws/credentials"
4343
"github.com/aws/aws-sdk-go/private/protocol/json/jsonutil"
44-
"github.com/cihub/seelog"
4544
"github.com/gorilla/websocket"
4645
"github.com/pkg/errors"
4746
)
@@ -68,7 +67,7 @@ const (
6867

6968
errClosed = "use of closed network connection"
7069

71-
// ExitTerminal indicates the containerd agent run into error that's not recoverable
70+
// ExitTerminal indicates the agent run into error that's not recoverable
7271
// no need to restart
7372
ExitTerminal = 5
7473
)
@@ -154,7 +153,7 @@ type ClientServer interface {
154153
// AgentConfig is a subset of agent's config. Since this requires agent specific information,
155154
// making this as a struct to be passed from the individual agents while using the wsclient shared lib.
156155
// The agent where the field is not applicable can be left empty
157-
type AgentConfig struct {
156+
type WSClientMinAgentConfig struct {
158157
AWSRegion string
159158
AcceptInsecureCert bool
160159
DockerEndpoint string
@@ -163,8 +162,8 @@ type AgentConfig struct {
163162

164163
// ClientServerImpl wraps commonly used methods defined in ClientServer interface.
165164
type ClientServerImpl struct {
166-
// cfg is the subset of user-specified runtime configuration
167-
cfg *AgentConfig
165+
// Cfg is the subset of user-specified runtime configuration
166+
Cfg *WSClientMinAgentConfig
168167
// conn holds the underlying low-level websocket connection
169168
conn wsconn.WebsocketConn
170169
// CredentialProvider is used to retrieve AWS credentials
@@ -220,31 +219,31 @@ func (cs *ClientServerImpl) Connect() error {
220219
request, _ := http.NewRequest("GET", parsedURL.String(), nil)
221220

222221
// Sign the request; we'll send its headers via the websocket client which includes the signature
223-
err = utils.SignHTTPRequest(request, cs.cfg.AWSRegion, ServiceName, cs.CredentialProvider, nil)
222+
err = utils.SignHTTPRequest(request, cs.Cfg.AWSRegion, ServiceName, cs.CredentialProvider, nil)
224223
if err != nil {
225224
return err
226225
}
227226

228227
timeoutDialer := &net.Dialer{Timeout: wsConnectTimeout}
229-
tlsConfig := &tls.Config{ServerName: parsedURL.Host, InsecureSkipVerify: cs.cfg.AcceptInsecureCert, MinVersion: tls.VersionTLS12}
228+
tlsConfig := &tls.Config{ServerName: parsedURL.Host, InsecureSkipVerify: cs.Cfg.AcceptInsecureCert, MinVersion: tls.VersionTLS12}
230229

231230
//TODO: In order to get rid of the check -
232231
// 1. Remove the hardcoded cipher suites, and rely on default by tls package
233232
// 2. NO_PROXY should be set as part of config check or in init somewhere. Wsclient is not the right place.
234-
if cs.cfg.IsDocker {
233+
if cs.Cfg.IsDocker {
235234

236235
cipher.WithSupportedCipherSuites(tlsConfig)
237236

238237
// Ensure that NO_PROXY gets set
239238
noProxy := os.Getenv("NO_PROXY")
240239
if noProxy == "" {
241-
dockerHost, err := url.Parse(cs.cfg.DockerEndpoint)
240+
dockerHost, err := url.Parse(cs.Cfg.DockerEndpoint)
242241
if err == nil {
243242
dockerHost.Scheme = ""
244243
os.Setenv("NO_PROXY", fmt.Sprintf("%s,%s", defaultNoProxyIP, dockerHost.String()))
245-
seelog.Info("NO_PROXY set:", os.Getenv("NO_PROXY"))
244+
logger.Info(fmt.Sprintf("NO_PROXY is set: %s", os.Getenv("NO_PROXY")))
246245
} else {
247-
seelog.Errorf("NO_PROXY unable to be set: the configured Docker endpoint is invalid.")
246+
logger.Error("NO_PROXY unable to be set: the configured Docker endpoint is invalid.")
248247
}
249248
}
250249
}
@@ -278,7 +277,7 @@ func (cs *ClientServerImpl) Connect() error {
278277
return cs.NewError(possibleError)
279278
}
280279
}
281-
seelog.Warnf("Error creating a websocket client: %v", err)
280+
logger.Warn(fmt.Sprintf("Error creating a websocket client: %v", err))
282281
return errors.Wrapf(err, "websocket client: unable to dial %s response: %s",
283282
parsedURL.Host, string(resp))
284283
}
@@ -287,7 +286,7 @@ func (cs *ClientServerImpl) Connect() error {
287286
defer cs.writeLock.Unlock()
288287

289288
cs.conn = websocketConn
290-
seelog.Debugf("Established a Websocket connection to %s", cs.URL)
289+
logger.Debug(fmt.Sprintf("Established a Websocket connection to %s", cs.URL))
291290
return nil
292291
}
293292

@@ -314,11 +313,11 @@ func (cs *ClientServerImpl) SetReadDeadline(t time.Time) error {
314313
if err == nil {
315314
return nil
316315
}
317-
seelog.Warnf("Unable to set read deadline for websocket connection: %v for %s", err, cs.URL)
316+
logger.Warn(fmt.Sprintf("Unable to set read deadline for websocket connection: %v for %s", err, cs.URL))
318317
// If we get connection closed error from SetReadDeadline, break out of the for loop and
319318
// return an error
320319
if opErr, ok := err.(*net.OpError); ok && strings.Contains(opErr.Err.Error(), errClosed) {
321-
seelog.Errorf("Stopping redundant reads on closed network connection: %s", cs.URL)
320+
logger.Error(fmt.Sprintf("Stopping redundant reads on closed network connection: %s", cs.URL))
322321
return opErr
323322
}
324323
// An unhandled error has occurred while trying to extend read deadline.
@@ -339,13 +338,13 @@ func (cs *ClientServerImpl) forceCloseConnection() {
339338
select {
340339
case closeErr := <-closeChan:
341340
if closeErr != nil {
342-
seelog.Warnf("Unable to close websocket connection: %v for %s",
343-
closeErr, cs.URL)
341+
logger.Warn(fmt.Sprintf("Unable to close websocket connection: %v for %s",
342+
closeErr, cs.URL))
344343
}
345344
case <-ctx.Done():
346345
if ctx.Err() != nil {
347-
seelog.Warnf("Context canceled waiting for termination of websocket connection: %v for %s",
348-
ctx.Err(), cs.URL)
346+
logger.Warn(fmt.Sprintf("Context canceled waiting for termination of websocket connection: %v for %s",
347+
ctx.Err(), cs.URL))
349348
}
350349
}
351350
}
@@ -363,7 +362,7 @@ func (cs *ClientServerImpl) Disconnect(...interface{}) error {
363362
// as the close frame needs to be sent to the server. Set the deadline
364363
// for that as well.
365364
if err := cs.conn.SetWriteDeadline(time.Now().Add(cs.RWTimeout)); err != nil {
366-
seelog.Warnf("Unable to set write deadline for websocket connection: %v for %s", err, cs.URL)
365+
logger.Warn(fmt.Sprintf("Unable to set write deadline for websocket connection: %v for %s", err, cs.URL))
367366
}
368367
return cs.conn.Close()
369368
}
@@ -386,7 +385,8 @@ func (cs *ClientServerImpl) AddRequestHandler(f RequestHandler) {
386385
recognizedTypes := cs.GetRecognizedTypes()
387386
_, ok := recognizedTypes[firstArgTypeStr]
388387
if !ok {
389-
seelog.Errorf("Invalid Handler. AddRequestHandler called with invalid function; argument type not recognized: %v", firstArgTypeStr)
388+
logger.Error(fmt.Sprintf("Invalid Handler. AddRequestHandler called with invalid function; "+
389+
"argument type not recognized: %v", firstArgTypeStr))
390390
os.Exit(ExitTerminal)
391391
}
392392
cs.RequestHandlers[firstArgTypeStr] = f
@@ -432,7 +432,8 @@ func (cs *ClientServerImpl) WriteMessage(send []byte) error {
432432
// library returns 'nil' anyway for SetWriteDeadline
433433
// https://github.com/gorilla/websocket/blob/4201258b820c74ac8e6922fc9e6b52f71fe46f8d/conn.go#L761
434434
if err := cs.conn.SetWriteDeadline(time.Now().Add(cs.RWTimeout)); err != nil {
435-
seelog.Warnf("Unable to set write deadline for websocket connection: %v for %s", err, cs.URL)
435+
logger.Warn(fmt.Sprintf("Unable to set write deadline for websocket connection: %v for %s",
436+
err, cs.URL))
436437
}
437438

438439
return cs.conn.WriteMessage(websocket.TextMessage, send)
@@ -469,20 +470,20 @@ func (cs *ClientServerImpl) ConsumeMessages(ctx context.Context) error {
469470
case err == nil:
470471
if messageType != websocket.TextMessage {
471472
// maybe not fatal though, we'll try to process it anyways
472-
seelog.Errorf("Unexpected messageType: %v", messageType)
473+
logger.Error(fmt.Sprintf("Unexpected messageType: %v", messageType))
473474
}
474475

475476
cs.handleMessage(message)
476477

477478
case permissibleCloseCode(err):
478-
seelog.Debugf("Connection closed for a valid reason: %s", err)
479+
logger.Debug(fmt.Sprintf("Connection closed for a valid reason: %s", err))
479480
errChan <- io.EOF
480481
return
481482

482483
default:
483484
// Unexpected error occurred
484-
seelog.Debugf("Error getting message from ws backend: error: [%v], messageType: [%v] ",
485-
err, messageType)
485+
logger.Debug(fmt.Sprintf("Error getting message from ws backend: error: [%v], messageType: [%v] ",
486+
err, messageType))
486487
errChan <- err
487488
return
488489
}
@@ -536,11 +537,11 @@ func (cs *ClientServerImpl) CreateRequestMessage(input interface{}) ([]byte, err
536537
func (cs *ClientServerImpl) handleMessage(data []byte) {
537538
typedMessage, typeStr, err := DecodeData(data, cs.TypeDecoder)
538539
if err != nil {
539-
seelog.Warnf("Unable to handle message from backend: %v", err)
540+
logger.Warn(fmt.Sprintf("Unable to handle message from backend: %v", err))
540541
return
541542
}
542543

543-
seelog.Debugf("Received message of type: %s", typeStr)
544+
logger.Debug(fmt.Sprintf("Received message of type: %s", typeStr))
544545

545546
if cs.AnyRequestHandler != nil {
546547
reflect.ValueOf(cs.AnyRequestHandler).Call([]reflect.Value{reflect.ValueOf(typedMessage)})
@@ -549,7 +550,7 @@ func (cs *ClientServerImpl) handleMessage(data []byte) {
549550
if handler, ok := cs.RequestHandlers[typeStr]; ok {
550551
reflect.ValueOf(handler).Call([]reflect.Value{reflect.ValueOf(typedMessage)})
551552
} else {
552-
seelog.Infof("No handler for message type: %s %s", typeStr, typedMessage)
553+
logger.Info(fmt.Sprintf("No handler for message type: %s %s", typeStr, typedMessage))
553554
}
554555
}
555556

ecs-agent/wsclient/client_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ func getClientServer(url string) *ClientServerImpl {
108108

109109
return &ClientServerImpl{
110110
URL: url,
111-
cfg: &AgentConfig{
111+
Cfg: &WSClientMinAgentConfig{
112112
AcceptInsecureCert: true,
113113
AWSRegion: "us-east-1",
114114
DockerEndpoint: "unix://" + dockerEndpoint,

0 commit comments

Comments
 (0)