@@ -3,9 +3,11 @@ const Q = require('q');
33const promiseRetry = require ( 'promise-retry' ) ;
44const logger = require ( 'cf-logs' ) . Logger ( 'codefresh:containerLogger' ) ;
55const CFError = require ( 'cf-errors' ) ;
6- const { Transform } = require ( 'stream' ) ;
6+ const { Transform, PassThrough } = require ( 'stream' ) ;
7+
78const _ = require ( 'lodash' ) ;
89const { LoggerStrategy } = require ( './enums' ) ;
10+ const deprecatedImagesCollector = require ( './metric/deprecated-images/deprecated-images.collector' ) ;
911
1012const CONTAINER_START_RETRY_TIMEOUT_SECONDS = 1 ;
1113const CONTAINER_START_RETRY_LIMIT = 10 ;
@@ -74,6 +76,7 @@ class ContainerLogger extends EventEmitter {
7476
7577 this . _registerToTtyStreams ( stdout , stderr ) ;
7678 } else {
79+ // TODO: parse deprecated images here
7780 this . _handleNonTtyStream ( stdout , false ) ;
7881 if ( stderr ) {
7982 this . _handleNonTtyStream ( stderr , true ) ;
@@ -131,6 +134,7 @@ class ContainerLogger extends EventEmitter {
131134 // { end = false } on the stepLoggerWritableStream because there is only one instance of it for all the steps.
132135 this . handledStreams ++ ;
133136 let stdoutStream = stdout
137+ . pipe ( this . _interceptDeprecatedImagesStream ( ) )
134138 . pipe ( this . _logSizeLimitStream ( ) )
135139 . pipe ( this . stepLogger . createMaskingStream ( ) ) ;
136140
@@ -148,6 +152,7 @@ class ContainerLogger extends EventEmitter {
148152
149153 this . handledStreams ++ ;
150154 let stderrStream = stderr
155+ . pipe ( this . _interceptDeprecatedImagesStream ( ) )
151156 . pipe ( this . _logSizeLimitStream ( ) )
152157 . pipe ( this . _errorTransformerStream ( ) )
153158 . pipe ( this . stepLogger . createMaskingStream ( ) ) ;
@@ -182,7 +187,9 @@ class ContainerLogger extends EventEmitter {
182187 this . handledStreams ++ ;
183188 stream . on ( 'end' , this . _handleFinished . bind ( this ) ) ;
184189 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 ) ;
186193 } ) ;
187194 logger . info ( `Listening on stream 'data' event for container: ${ this . containerId } ` ) ;
188195 }
@@ -233,6 +240,11 @@ class ContainerLogger extends EventEmitter {
233240 this . emit ( 'message.logged' , curLogSize ) ;
234241 }
235242
243+ _interceptDeprecatedImagesStream ( ) {
244+ return new PassThrough ( )
245+ . on ( 'data' , ( chunk ) => deprecatedImagesCollector . catchDeprecatedImage ( chunk . toString ( 'utf8' ) ) ) ;
246+ }
247+
236248 _errorTransformerStream ( ) {
237249 return new Transform ( {
238250 transform : ( data , encoding , done ) => {
0 commit comments