diff --git a/components/content-service-api/go/initializer.go b/components/content-service-api/go/initializer.go index fd2b98ba1d6145..d7bc238d5dadea 100644 --- a/components/content-service-api/go/initializer.go +++ b/components/content-service-api/go/initializer.go @@ -105,27 +105,12 @@ func WalkInitializer(path []string, init *WorkspaceInitializer, visitor func(pat } switch spec := init.Spec.(type) { - case *WorkspaceInitializer_Backup: - return visitor(append(path, "backup"), init) - case *WorkspaceInitializer_Composite: - path = append(path, "composite") - err := visitor(path, init) - if err != nil { - return err - } - for i, p := range spec.Composite.Initializer { - err := WalkInitializer(append(path, strconv.Itoa(i)), p, visitor) - if err != nil { - return err - } - } - return nil - case *WorkspaceInitializer_Download: - return visitor(append(path, "download"), init) case *WorkspaceInitializer_Empty: return visitor(append(path, "empty"), init) case *WorkspaceInitializer_Git: return visitor(append(path, "git"), init) + case *WorkspaceInitializer_Snapshot: + return visitor(append(path, "snapshot"), init) case *WorkspaceInitializer_Prebuild: child := append(path, "prebuild") err := visitor(child, init) @@ -139,6 +124,23 @@ func WalkInitializer(path []string, init *WorkspaceInitializer, visitor func(pat } } return nil + case *WorkspaceInitializer_Composite: + path = append(path, "composite") + err := visitor(path, init) + if err != nil { + return err + } + for i, p := range spec.Composite.Initializer { + err := WalkInitializer(append(path, strconv.Itoa(i)), p, visitor) + if err != nil { + return err + } + } + return nil + case *WorkspaceInitializer_Download: + return visitor(append(path, "download"), init) + case *WorkspaceInitializer_Backup: + return visitor(append(path, "backup"), init) default: return fmt.Errorf("unsupported workspace initializer in walkInitializer - this is a bug in Gitpod") diff --git a/components/content-service-api/go/initializer_test.go b/components/content-service-api/go/initializer_test.go index 9ae86b74f00870..dcb780c06a2ca2 100644 --- a/components/content-service-api/go/initializer_test.go +++ b/components/content-service-api/go/initializer_test.go @@ -105,6 +105,17 @@ func TestGetCheckoutLocationsFromInitializer(t *testing.T) { { Name: "nil initializer", }, + { + Name: "snapshot initializer", + Initializer: &api.WorkspaceInitializer{ + Spec: &api.WorkspaceInitializer_Snapshot{ + Snapshot: &api.SnapshotInitializer{ + Snapshot: "foo", + FromVolumeSnapshot: true, + }, + }, + }, + }, } for _, test := range tests {