@@ -3,9 +3,11 @@ const Q = require('q');
3
3
const promiseRetry = require ( 'promise-retry' ) ;
4
4
const logger = require ( 'cf-logs' ) . Logger ( 'codefresh:containerLogger' ) ;
5
5
const CFError = require ( 'cf-errors' ) ;
6
- const { Transform } = require ( 'stream' ) ;
6
+ const { Transform, PassThrough } = require ( 'stream' ) ;
7
+
7
8
const _ = require ( 'lodash' ) ;
8
9
const { LoggerStrategy } = require ( './enums' ) ;
10
+ const deprecatedImagesCollector = require ( './metric/deprecated-images/deprecated-images.collector' ) ;
9
11
10
12
const CONTAINER_START_RETRY_TIMEOUT_SECONDS = 1 ;
11
13
const CONTAINER_START_RETRY_LIMIT = 10 ;
@@ -74,6 +76,7 @@ class ContainerLogger extends EventEmitter {
74
76
75
77
this . _registerToTtyStreams ( stdout , stderr ) ;
76
78
} else {
79
+ // TODO: parse deprecated images here
77
80
this . _handleNonTtyStream ( stdout , false ) ;
78
81
if ( stderr ) {
79
82
this . _handleNonTtyStream ( stderr , true ) ;
@@ -131,6 +134,7 @@ class ContainerLogger extends EventEmitter {
131
134
// { end = false } on the stepLoggerWritableStream because there is only one instance of it for all the steps.
132
135
this . handledStreams ++ ;
133
136
let stdoutStream = stdout
137
+ . pipe ( this . _interceptDeprecatedImagesStream ( ) )
134
138
. pipe ( this . _logSizeLimitStream ( ) )
135
139
. pipe ( this . stepLogger . createMaskingStream ( ) ) ;
136
140
@@ -148,6 +152,7 @@ class ContainerLogger extends EventEmitter {
148
152
149
153
this . handledStreams ++ ;
150
154
let stderrStream = stderr
155
+ . pipe ( this . _interceptDeprecatedImagesStream ( ) )
151
156
. pipe ( this . _logSizeLimitStream ( ) )
152
157
. pipe ( this . _errorTransformerStream ( ) )
153
158
. pipe ( this . stepLogger . createMaskingStream ( ) ) ;
@@ -182,7 +187,9 @@ class ContainerLogger extends EventEmitter {
182
187
this . handledStreams ++ ;
183
188
stream . on ( 'end' , this . _handleFinished . bind ( this ) ) ;
184
189
stream . on ( 'data' , ( chunk ) => {
185
- this . _logMessage ( Buffer . from ( chunk ) . toString ( 'utf-8' ) , isError ) ;
190
+ const message = Buffer . from ( chunk ) . toString ( 'utf-8' ) ;
191
+ deprecatedImagesCollector . catchDeprecatedImage ( message ) ;
192
+ this . _logMessage ( message , isError ) ;
186
193
} ) ;
187
194
logger . info ( `Listening on stream 'data' event for container: ${ this . containerId } ` ) ;
188
195
}
@@ -233,6 +240,11 @@ class ContainerLogger extends EventEmitter {
233
240
this . emit ( 'message.logged' , curLogSize ) ;
234
241
}
235
242
243
+ _interceptDeprecatedImagesStream ( ) {
244
+ return new PassThrough ( )
245
+ . on ( 'data' , ( chunk ) => deprecatedImagesCollector . catchDeprecatedImage ( chunk . toString ( 'utf8' ) ) ) ;
246
+ }
247
+
236
248
_errorTransformerStream ( ) {
237
249
return new Transform ( {
238
250
transform : ( data , encoding , done ) => {
0 commit comments