@@ -96,9 +96,8 @@ type FileContext struct {
96
96
type ExtractFunction func (string , * tar.Header , string , io.Reader ) error
97
97
98
98
type FSConfig struct {
99
- includeWhiteout bool
100
- printExtractionProgress bool
101
- extractFunc ExtractFunction
99
+ includeWhiteout bool
100
+ extractFunc ExtractFunction
102
101
}
103
102
104
103
type FSOpt func (* FSConfig )
@@ -127,12 +126,6 @@ func IncludeWhiteout() FSOpt {
127
126
}
128
127
}
129
128
130
- func PrintExtractionProgress () FSOpt {
131
- return func (opts * FSConfig ) {
132
- opts .printExtractionProgress = true
133
- }
134
- }
135
-
136
129
func ExtractFunc (extractFunc ExtractFunction ) FSOpt {
137
130
return func (opts * FSConfig ) {
138
131
opts .extractFunc = extractFunc
@@ -151,7 +144,7 @@ func GetFSFromImage(root string, img v1.Image, extract ExtractFunction) ([]strin
151
144
return nil , err
152
145
}
153
146
154
- return GetFSFromLayers (root , layers , ExtractFunc (extract ), PrintExtractionProgress () )
147
+ return GetFSFromLayers (root , layers , ExtractFunc (extract ))
155
148
}
156
149
157
150
func GetFSFromLayers (root string , layers []v1.Layer , opts ... FSOpt ) ([]string , error ) {
@@ -170,37 +163,12 @@ func GetFSFromLayers(root string, layers []v1.Layer, opts ...FSOpt) ([]string, e
170
163
return nil , errors .New ("must supply an extract function" )
171
164
}
172
165
173
- var totalSize int64
174
- layerSizes := make ([]int64 , 0 , len (layers ))
175
- for i , l := range layers {
176
- layerSize , err := l .Size ()
177
- if err != nil {
178
- return nil , errors .Wrap (err , fmt .Sprintf ("error checking layer size %d" , i ))
179
- }
180
- layerSizes = append (layerSizes , layerSize )
181
- totalSize += layerSize
182
- }
183
- printExtractionProgress := cfg .printExtractionProgress
184
- if totalSize == 0 {
185
- printExtractionProgress = false
186
- }
187
-
188
- if printExtractionProgress {
189
- logrus .Infof ("Extracting image layers to %s" , root )
190
- }
191
-
192
166
extractedFiles := []string {}
193
- var extractedBytes int64
194
167
for i , l := range layers {
195
168
if mediaType , err := l .MediaType (); err == nil {
196
- logrus .Tracef ("Extracting layer %d/%d of media type %s" , i + 1 , len ( layers ) , mediaType )
169
+ logrus .Tracef ("Extracting layer %d of media type %s" , i , mediaType )
197
170
} else {
198
- logrus .Tracef ("Extracting layer %d/%d" , i + 1 , len (layers ))
199
- }
200
-
201
- progressPerc := float64 (extractedBytes ) / float64 (totalSize ) * 100
202
- if printExtractionProgress {
203
- logrus .Infof ("Extracting layer %d/%d (%.1f%%)" , i + 1 , len (layers ), progressPerc )
171
+ logrus .Tracef ("Extracting layer %d" , i )
204
172
}
205
173
206
174
r , err := l .Uncompressed ()
@@ -209,16 +177,6 @@ func GetFSFromLayers(root string, layers []v1.Layer, opts ...FSOpt) ([]string, e
209
177
}
210
178
defer r .Close ()
211
179
212
- if printExtractionProgress {
213
- r = & printAfterReader {
214
- ReadCloser : r ,
215
- after : time .Second ,
216
- print : func (n int ) {
217
- logrus .Infof ("Extracting layer %d/%d (%.1f%%) %s" , i + 1 , len (layers ), progressPerc , strings .Repeat ("." , n ))
218
- },
219
- }
220
- }
221
-
222
180
tr := tar .NewReader (r )
223
181
for {
224
182
hdr , err := tr .Next ()
@@ -267,38 +225,10 @@ func GetFSFromLayers(root string, layers []v1.Layer, opts ...FSOpt) ([]string, e
267
225
268
226
extractedFiles = append (extractedFiles , filepath .Join (root , cleanedName ))
269
227
}
270
-
271
- extractedBytes += layerSizes [i ]
272
228
}
273
-
274
- if printExtractionProgress {
275
- logrus .Infof ("Extraction complete" )
276
- }
277
-
278
229
return extractedFiles , nil
279
230
}
280
231
281
- type printAfterReader struct {
282
- io.ReadCloser
283
- t time.Time
284
- after time.Duration
285
- count int
286
- print func (int )
287
- }
288
-
289
- func (r * printAfterReader ) Read (p []byte ) (n int , err error ) {
290
- n , err = r .ReadCloser .Read (p )
291
- if r .t .IsZero () {
292
- r .t = time .Now ()
293
- }
294
- if time .Since (r .t ) >= r .after {
295
- r .count ++
296
- r .print (r .count )
297
- r .t = time .Now ()
298
- }
299
- return
300
- }
301
-
302
232
// DeleteFilesystem deletes the extracted image file system
303
233
func DeleteFilesystem () error {
304
234
logrus .Info ("Deleting filesystem..." )
0 commit comments