@@ -2,18 +2,20 @@ package state
22
33import (
44 "fmt"
5- "github.com/silenium-dev/docker-wrapper/pkg/client/pull/events"
65 "time"
6+
7+ "github.com/silenium-dev/docker-wrapper/pkg/client/pull/events"
78)
89
9- func NewLayer (event events.LayerEvent ) (Layer , error ) {
10+ func NewLayer (isPodman bool , event events.LayerEvent ) (Layer , error ) {
11+ base := layerBase {id : event .LayerId (), isPodman : isPodman }
1012 switch event := event .(type ) {
1113 case * events.PullingFSLayer :
12- return & LayerPullingFSLayer {layerBase { event . LayerId ()} }, nil
14+ return & LayerPullingFSLayer {base }, nil
1315 case * events.AlreadyExists :
14- return & LayerAlreadyExists {layerBase { event . LayerId ()} }, nil
16+ return & LayerAlreadyExists {base }, nil
1517 case * events.LayerError :
16- return & LayerErrored {layerBase { event . LayerId ()} , event .Error }, nil
18+ return & LayerErrored {base , event .Error }, nil
1719 }
1820 return nil , fmt .Errorf ("invalid initial event (%T)" , event )
1921}
@@ -46,7 +48,11 @@ func (l *LayerPullingFSLayer) Next(event events.LayerEvent) (Layer, error) {
4648 case * events.Downloading :
4749 return & LayerDownloading {l .layerBase , event .Progress ()}, nil
4850 case * events.DownloadComplete :
49- return & LayerDownloadComplete {l .layerBase }, nil
51+ if l .isPodman {
52+ return & LayerPullComplete {l .layerBase }, nil
53+ } else {
54+ return & LayerDownloadComplete {l .layerBase }, nil
55+ }
5056 case * events.AlreadyExists :
5157 return & LayerAlreadyExists {l .layerBase }, nil
5258 case * events.LayerError :
@@ -70,9 +76,13 @@ func (l *LayerWaiting) Next(event events.LayerEvent) (Layer, error) {
7076 case * events.Downloading :
7177 return & LayerDownloading {l .layerBase , event .Progress ()}, nil
7278 case * events.DownloadComplete :
73- return & LayerDownloadComplete {l .layerBase }, nil
79+ if l .isPodman {
80+ return & LayerPullComplete {l .layerBase }, nil
81+ } else {
82+ return & LayerDownloadComplete {l .layerBase }, nil
83+ }
7484 case * events.LayerError :
75- return & LayerErrored {layerBase { event . LayerId ()} , event .Error }, nil
85+ return & LayerErrored {l . layerBase , event .Error }, nil
7686 }
7787 return nil , fmt .Errorf ("invalid transition (waiting + %T)" , event )
7888}
@@ -95,13 +105,17 @@ func (l *LayerDownloading) Next(event events.LayerEvent) (Layer, error) {
95105 case * events.Downloading :
96106 return & LayerDownloading {l .layerBase , event .Progress ()}, nil
97107 case * events.DownloadComplete :
98- return & LayerDownloadComplete {l .layerBase }, nil
108+ if l .isPodman {
109+ return & LayerPullComplete {l .layerBase }, nil
110+ } else {
111+ return & LayerDownloadComplete {l .layerBase }, nil
112+ }
99113 case * events.VerifyingChecksum :
100114 return & LayerVerifyingChecksum {l .layerBase }, nil
101115 case * events.Extracting :
102116 return parseLayerExtracting (l .layerBase , event ), nil
103117 case * events.LayerError :
104- return & LayerErrored {layerBase { event . LayerId ()} , event .Error }, nil
118+ return & LayerErrored {l . layerBase , event .Error }, nil
105119 }
106120 return nil , fmt .Errorf ("invalid transition (downloading + %T)" , event )
107121}
@@ -121,7 +135,7 @@ func (l *LayerVerifyingChecksum) Next(event events.LayerEvent) (Layer, error) {
121135 case * events.Extracting :
122136 return parseLayerExtracting (l .layerBase , event ), nil
123137 case * events.LayerError :
124- return & LayerErrored {layerBase { event . LayerId ()} , event .Error }, nil
138+ return & LayerErrored {l . layerBase , event .Error }, nil
125139 }
126140 return nil , fmt .Errorf ("invalid transition (verifying-checksum + %T)" , event )
127141}
@@ -139,11 +153,15 @@ func (l *LayerDownloadComplete) Next(event events.LayerEvent) (Layer, error) {
139153 case * events.Extracting :
140154 return parseLayerExtracting (l .layerBase , event ), nil
141155 case * events.LayerError :
142- return & LayerErrored {layerBase { event . LayerId ()} , event .Error }, nil
156+ return & LayerErrored {l . layerBase , event .Error }, nil
143157 case * events.PullComplete :
144158 return & LayerPullComplete {l .layerBase }, nil
145159 case * events.DownloadComplete :
146- return & LayerPullComplete {l .layerBase }, nil
160+ if l .isPodman {
161+ return & LayerPullComplete {l .layerBase }, nil
162+ } else {
163+ return & LayerDownloadComplete {l .layerBase }, nil
164+ }
147165 }
148166 return nil , fmt .Errorf ("invalid transition (download-complete + %T)" , event )
149167}
@@ -180,7 +198,7 @@ func (l *LayerExtracting) Next(event events.LayerEvent) (Layer, error) {
180198 case * events.PullComplete :
181199 return & LayerPullComplete {l .layerBase }, nil
182200 case * events.LayerError :
183- return & LayerErrored {layerBase { event . LayerId ()} , event .Error }, nil
201+ return & LayerErrored {l . layerBase , event .Error }, nil
184202 }
185203 return nil , fmt .Errorf ("invalid transition (extracting + %T)" , event )
186204}
@@ -210,7 +228,7 @@ func (l *LayerAlreadyExists) Next(event events.LayerEvent) (Layer, error) {
210228 case * events.Extracting :
211229 return parseLayerExtracting (l .layerBase , event ), nil
212230 case * events.LayerError :
213- return & LayerErrored {layerBase { event . LayerId ()} , event .Error }, nil
231+ return & LayerErrored {l . layerBase , event .Error }, nil
214232 case * events.PullComplete :
215233 return & LayerPullComplete {l .layerBase }, nil
216234 case * events.AlreadyExists :
@@ -228,5 +246,11 @@ func (l *LayerPullComplete) Status() string {
228246}
229247
230248func (l * LayerPullComplete ) Next (event events.LayerEvent ) (Layer , error ) {
249+ switch event .(type ) {
250+ case * events.DownloadComplete :
251+ if l .isPodman {
252+ return & LayerPullComplete {l .layerBase }, nil
253+ }
254+ }
231255 return nil , fmt .Errorf ("already completed, tried %T on layer-pull-complete" , event )
232256}
0 commit comments