diff --git a/internal/resource/container_image.go b/internal/resource/container_image.go index 66c846a..87d0278 100644 --- a/internal/resource/container_image.go +++ b/internal/resource/container_image.go @@ -600,7 +600,7 @@ func (c *ContainerImage) Create(ctx context.Context) (err error) { err = c.Push(ctx) } } - return nil + return } func (c *ContainerImage) Update(ctx context.Context) error { diff --git a/internal/resource/container_image_test.go b/internal/resource/container_image_test.go index 2890a31..8158b05 100644 --- a/internal/resource/container_image_test.go +++ b/internal/resource/container_image_test.go @@ -149,7 +149,7 @@ func TestCreateContainerImagePush(t *testing.T) { assert.Nil(t, stater.Trigger("create")) - c.Push(context.Background()) + assert.Nil(t, c.Push(context.Background())) assert.True(t, c.PushImage) assert.Equal(t, "foo", c.Output.String()) } diff --git a/internal/resource/resource.go b/internal/resource/resource.go index 030e51b..1b740a5 100644 --- a/internal/resource/resource.go +++ b/internal/resource/resource.go @@ -137,41 +137,56 @@ func (r ResourceReference) ContentWriterStream() (*transport.Writer, error) { func StorageMachine(sub machine.Subscriber) machine.Stater { // start_destroy -> absent -> start_create -> present -> start_destroy stater := machine.New("unknown") - stater.AddStates("unkonwn", "absent", "start_create", "present", "start_delete", "start_read", "start_update") + stater.AddStates("unkonwn", "absent", "start_create", "present", "start_delete", "start_read", "start_update", "start_stat") + stater.AddTransition("create", machine.States("unknown", "absent"), "start_create") if e := stater.AddSubscription("create", sub); e != nil { return nil } + stater.AddTransition("created", machine.States("start_create"), "present") if e := stater.AddSubscription("created", sub); e != nil { return nil } - stater.AddTransition("exists", machine.States("unknown", "absent"), "present") + stater.AddTransition("exists", machine.States("unknown", "absent", "start_stat"), "present") if e := stater.AddSubscription("exists", sub); e != nil { return nil } + stater.AddTransition("notexists", machine.States("*"), "absent") if e := stater.AddSubscription("notexists", sub); e != nil { return nil } + stater.AddTransition("read", machine.States("*"), "start_read") if e := stater.AddSubscription("read", sub); e != nil { return nil } + stater.AddTransition("state_read", machine.States("start_read"), "present") + + stater.AddTransition("stat", machine.States("*"), "start_stat") + if e := stater.AddSubscription("stat", sub); e != nil { + return nil + } + stater.AddTransition("update", machine.States("*"), "start_update") if e := stater.AddSubscription("update", sub); e != nil { return nil } + stater.AddTransition("updated", machine.States("start_update"), "present") + stater.AddTransition("delete", machine.States("*"), "start_delete") if e := stater.AddSubscription("delete", sub); e != nil { return nil } + stater.AddTransition("deleted", machine.States("start_delete"), "absent") if e := stater.AddSubscription("deleted", sub); e != nil { return nil } + return stater }