@@ -11,7 +11,6 @@ import (
1111 ecsTypes "github.com/aws/aws-sdk-go-v2/service/ecs/types"
1212 "github.com/gruntwork-io/go-commons/collections"
1313 "github.com/gruntwork-io/go-commons/errors"
14- "github.com/gruntwork-io/go-commons/logging"
1514 "github.com/gruntwork-io/go-commons/retry"
1615)
1716
@@ -29,8 +28,9 @@ func GetContainerInstanceArns(opts *Options, clusterName string) ([]string, erro
2928 return nil , err
3029 }
3130
32- logger := logging .GetProjectLogger ()
33- logger .Infof ("Looking up Container Instance ARNs for ECS cluster %s" , clusterName )
31+ if opts .Logger != nil {
32+ opts .Logger .Debugf ("Looking up Container Instance ARNs for ECS cluster %s" , clusterName )
33+ }
3434
3535 input := & ecs.ListContainerInstancesInput {Cluster : aws .String (clusterName )}
3636 arns := []string {}
@@ -60,15 +60,16 @@ func StartDrainingContainerInstances(opts *Options, clusterName string, containe
6060 return err
6161 }
6262
63- logger := logging .GetProjectLogger ()
6463 batchSize := 10
6564 numBatches := int (math .Ceil (float64 (len (containerInstanceArns ) / batchSize )))
6665
6766 errList := NewMultipleDrainContainerInstanceErrors ()
6867 for batchIdx , batchedArnList := range collections .BatchListIntoGroupsOf (containerInstanceArns , batchSize ) {
6968 batchedArns := aws .StringSlice (batchedArnList )
7069
71- logger .Infof ("Putting batch %d/%d of container instances in cluster %s into DRAINING state" , batchIdx , numBatches , clusterName )
70+ if opts .Logger != nil {
71+ opts .Logger .Debugf ("Putting batch %d/%d of container instances in cluster %s into DRAINING state" , batchIdx , numBatches , clusterName )
72+ }
7273 input := & ecs.UpdateContainerInstancesStateInput {
7374 Cluster : aws .String (clusterName ),
7475 ContainerInstances : aws .ToStringSlice (batchedArns ),
@@ -77,18 +78,25 @@ func StartDrainingContainerInstances(opts *Options, clusterName string, containe
7778 _ , err := client .UpdateContainerInstancesState (opts .Context , input )
7879 if err != nil {
7980 errList .AddError (err )
80- logger .Errorf ("Encountered error starting to drain container instances in batch %d: %s" , batchIdx , err )
81- logger .Errorf ("Container Instance ARNs: %s" , strings .Join (batchedArnList , "," ))
81+ if opts .Logger != nil {
82+ opts .Logger .Errorf ("Encountered error starting to drain container instances in batch %d: %s" , batchIdx , err )
83+ opts .Logger .Errorf ("Container Instance ARNs: %s" , strings .Join (batchedArnList , "," ))
84+ }
8285 continue
8386 }
8487
85- logger .Infof ("Started draining %d container instances from batch %d" , len (batchedArnList ), batchIdx )
88+ if opts .Logger != nil {
89+ opts .Logger .Debugf ("Started draining %d container instances from batch %d" , len (batchedArnList ), batchIdx )
90+ }
8691 }
8792
8893 if ! errList .IsEmpty () {
8994 return errors .WithStackTrace (errList )
9095 }
91- logger .Infof ("Successfully started draining all %d container instances" , len (containerInstanceArns ))
96+
97+ if opts .Logger != nil {
98+ opts .Logger .Debugf ("Successfully started draining all %d container instances" , len (containerInstanceArns ))
99+ }
92100 return nil
93101}
94102
@@ -100,22 +108,25 @@ func WaitForContainerInstancesToDrain(opts *Options, clusterName string, contain
100108 return err
101109 }
102110
103- logger := logging .GetProjectLogger ()
104- logger .Infof ("Checking if all ECS Tasks have been drained from the ECS Container Instances in Cluster %s." , clusterName )
111+ if opts .Logger != nil {
112+ opts .Logger .Debugf ("Checking if all ECS Tasks have been drained from the ECS Container Instances in Cluster %s." , clusterName )
113+ }
105114
106115 batchSize := 100
107116 numBatches := int (math .Ceil (float64 (len (containerInstanceArns ) / batchSize )))
108117
109118 err = retry .DoWithRetry (
110- logger .Logger ,
119+ opts .Logger ,
111120 "Wait for Container Instances to be Drained" ,
112121 maxRetries , sleepBetweenRetries ,
113122 func () error {
114123 responses := []* ecs.DescribeContainerInstancesOutput {}
115124 for batchIdx , batchedArnList := range collections .BatchListIntoGroupsOf (containerInstanceArns , batchSize ) {
116125 batchedArns := aws .StringSlice (batchedArnList )
117126
118- logger .Infof ("Fetching description of batch %d/%d of ECS Instances in Cluster %s." , batchIdx , numBatches , clusterName )
127+ if opts .Logger != nil {
128+ opts .Logger .Debugf ("Fetching description of batch %d/%d of ECS Instances in Cluster %s." , batchIdx , numBatches , clusterName )
129+ }
119130 input := & ecs.DescribeContainerInstancesInput {
120131 Cluster : aws .String (clusterName ),
121132 ContainerInstances : aws .ToStringSlice (batchedArns ),
@@ -134,7 +145,9 @@ func WaitForContainerInstancesToDrain(opts *Options, clusterName string, contain
134145
135146 // Yay, all done.
136147 if drained , _ := allInstancesFullyDrained (responses ); drained == true {
137- logger .Infof ("All container instances have been drained in Cluster %s!" , clusterName )
148+ if opts .Logger != nil {
149+ opts .Logger .Debugf ("All container instances have been drained in Cluster %s!" , clusterName )
150+ }
138151 return nil
139152 }
140153
@@ -181,19 +194,24 @@ func allInstancesFullyDrained(responses []*ecs.DescribeContainerInstancesOutput)
181194}
182195
183196func instanceFullyDrained (instance ecsTypes.ContainerInstance ) bool {
184- logger := logging .GetProjectLogger ()
185197 instanceArn := instance .ContainerInstanceArn
186198
187199 if * instance .Status == "ACTIVE" {
188- logger .Infof ("The ECS Container Instance %s is still in ACTIVE status" , * instanceArn )
200+ if opts .Logger != nil {
201+ opts .Logger .Debugf ("The ECS Container Instance %s is still in ACTIVE status" , * instanceArn )
202+ }
189203 return false
190204 }
191205 if instance .PendingTasksCount > 0 {
192- logger .Infof ("The ECS Container Instance %s still has pending tasks" , * instanceArn )
206+ if opts .Logger != nil {
207+ opts .Logger .Debugf ("The ECS Container Instance %s still has pending tasks" , * instanceArn )
208+ }
193209 return false
194210 }
195211 if instance .RunningTasksCount > 0 {
196- logger .Infof ("The ECS Container Instance %s still has running tasks" , * instanceArn )
212+ if opts .Logger != nil {
213+ opts .Logger .Debugf ("The ECS Container Instance %s still has running tasks" , * instanceArn )
214+ }
197215 return false
198216 }
199217
0 commit comments