From 72bb2c2f6e8a8bc0264b48143af4416eaccab375 Mon Sep 17 00:00:00 2001 From: SDK Generator Bot Date: Wed, 21 Oct 2026 09:18:36 +0000 Subject: [PATCH] Generate registry --- services/registry/CHANGELOG.md | 3 - services/registry/LICENSE.md | 2 +- services/registry/NOTICE.txt | 2 - services/registry/VERSION | 1 - services/registry/oas_commit | 2 +- services/registry/v1api/wait/wait.go | 68 ------ services/registry/v1api/wait/wait_test.go | 269 ---------------------- 7 files changed, 2 insertions(+), 345 deletions(-) delete mode 100644 services/registry/CHANGELOG.md delete mode 100644 services/registry/NOTICE.txt delete mode 100644 services/registry/VERSION delete mode 100644 services/registry/v1api/wait/wait.go delete mode 100644 services/registry/v1api/wait/wait_test.go diff --git a/services/registry/CHANGELOG.md b/services/registry/CHANGELOG.md deleted file mode 100644 index 3019ed1616..0000000000 --- a/services/registry/CHANGELOG.md +++ /dev/null @@ -1,3 +0,0 @@ -## v0.1.0 -- **New:** SDK module for STACKIT Container Registry service. -- `v1`: New package which can be used for communication with the registry v1 API \ No newline at end of file diff --git a/services/registry/LICENSE.md b/services/registry/LICENSE.md index 635ec2af64..261eeb9e9f 100644 --- a/services/registry/LICENSE.md +++ b/services/registry/LICENSE.md @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2026 Schwarz IT KG + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/services/registry/NOTICE.txt b/services/registry/NOTICE.txt deleted file mode 100644 index 561e66a074..0000000000 --- a/services/registry/NOTICE.txt +++ /dev/null @@ -1,2 +0,0 @@ -STACKIT Container Registry SDK for Go -Copyright 2026 Schwarz IT KG \ No newline at end of file diff --git a/services/registry/VERSION b/services/registry/VERSION deleted file mode 100644 index 9ff151c5b3..0000000000 --- a/services/registry/VERSION +++ /dev/null @@ -1 +0,0 @@ -v0.1.0 \ No newline at end of file diff --git a/services/registry/oas_commit b/services/registry/oas_commit index 6a8ba08d49..9c7455dfa4 100644 --- a/services/registry/oas_commit +++ b/services/registry/oas_commit @@ -1 +1 @@ -ef9232ba8d49c72fc3397a365b09ca1a8205b25e +7f06203ae1280163695cd27b7f353dca0d2d04b8 diff --git a/services/registry/v1api/wait/wait.go b/services/registry/v1api/wait/wait.go deleted file mode 100644 index d24ea56651..0000000000 --- a/services/registry/v1api/wait/wait.go +++ /dev/null @@ -1,68 +0,0 @@ -package wait - -import ( - "context" - "errors" - "net/http" - "time" - - "github.com/stackitcloud/stackit-sdk-go/core/wait" - registry "github.com/stackitcloud/stackit-sdk-go/services/registry/v1api" -) - -const ( - ArtifactoryReconciling = registry.ARTIFACTORYSTATE_RECONCILING - ArtifactoryActive = registry.ARTIFACTORYSTATE_ACTIVE - ArtifactoryDeleted = registry.ARTIFACTORYSTATE_DELETED - ArtifactoryError = registry.ARTIFACTORYSTATE_ERROR -) - -// CreateArtifactoryWaitHandler will wait for the artifactory to be created/ready. -func CreateArtifactoryWaitHandler(ctx context.Context, a registry.DefaultAPI, projectId, regionId, artifactoryId string) *wait.AsyncActionHandler[registry.Artifactory] { - waitConfig := wait.WaiterHelper[registry.Artifactory, registry.ArtifactoryState]{ - FetchInstance: a.GetArtifactory(ctx, projectId, regionId, artifactoryId).Execute, - GetState: getStateArtifactory, - ActiveState: []registry.ArtifactoryState{registry.ARTIFACTORYSTATE_ACTIVE}, - ErrorState: []registry.ArtifactoryState{registry.ARTIFACTORYSTATE_ERROR}, - } - - handler := wait.New(waitConfig.Wait()) - handler.SetTimeout(5 * time.Minute) - return handler -} - -// UpdateArtifactoryWaitHandler will wait for the artifactory update/patch to complete. -func UpdateArtifactoryWaitHandler(ctx context.Context, a registry.DefaultAPI, projectId, regionId, artifactoryId string) *wait.AsyncActionHandler[registry.Artifactory] { - waitConfig := wait.WaiterHelper[registry.Artifactory, registry.ArtifactoryState]{ - FetchInstance: a.GetArtifactory(ctx, projectId, regionId, artifactoryId).Execute, - GetState: getStateArtifactory, - ActiveState: []registry.ArtifactoryState{registry.ARTIFACTORYSTATE_ACTIVE}, - ErrorState: []registry.ArtifactoryState{registry.ARTIFACTORYSTATE_ERROR}, - } - - handler := wait.New(waitConfig.Wait()) - handler.SetTimeout(5 * time.Minute) - return handler -} - -// DeleteArtifactoryWaitHandler will wait for the artifactory to be deleted. -func DeleteArtifactoryWaitHandler(ctx context.Context, a registry.DefaultAPI, projectId, regionId, artifactoryId string) *wait.AsyncActionHandler[registry.Artifactory] { - waitConfig := wait.WaiterHelper[registry.Artifactory, registry.ArtifactoryState]{ - FetchInstance: a.GetArtifactory(ctx, projectId, regionId, artifactoryId).Execute, - GetState: getStateArtifactory, - ActiveState: nil, - ErrorState: []registry.ArtifactoryState{registry.ARTIFACTORYSTATE_ERROR}, - DeleteHttpErrorStatusCodes: []int{http.StatusNotFound}, - } - - handler := wait.New(waitConfig.Wait()) - handler.SetTimeout(5 * time.Minute) - return handler -} - -func getStateArtifactory(response *registry.Artifactory) (registry.ArtifactoryState, error) { - if response == nil { - return "", errors.New("empty response") - } - return response.GetState(), nil -} diff --git a/services/registry/v1api/wait/wait_test.go b/services/registry/v1api/wait/wait_test.go deleted file mode 100644 index 179f7c2b6c..0000000000 --- a/services/registry/v1api/wait/wait_test.go +++ /dev/null @@ -1,269 +0,0 @@ -package wait - -import ( - "context" - "net/http" - "testing" - "testing/synctest" - "time" - - "github.com/stackitcloud/stackit-sdk-go/core/oapierror" - "github.com/stackitcloud/stackit-sdk-go/core/utils" - registry "github.com/stackitcloud/stackit-sdk-go/services/registry/v1api" -) - -const ( - testProjectId = "00000000-0000-0000-0000-000000000000" - testRegionId = "eu01" - testArtifactoryId = "test-artifactory-id" -) - -type response struct { - state registry.ArtifactoryState - status int -} - -type mockSettings struct { - responseIndex int - responses []response -} - -func newAPIMock(settings *mockSettings) registry.DefaultAPI { - return ®istry.DefaultAPIServiceMock{ - GetArtifactoryExecuteMock: utils.Ptr(func(_ registry.ApiGetArtifactoryRequest) (*registry.Artifactory, error) { - resp := settings.responses[settings.responseIndex] - settings.responseIndex++ - settings.responseIndex %= len(settings.responses) - - if resp.status >= http.StatusBadRequest { - return nil, &oapierror.GenericOpenAPIError{ - StatusCode: resp.status, - ErrorMessage: "simulated error", - } - } - - return ®istry.Artifactory{ - Id: testArtifactoryId, - State: resp.state, - }, nil - }), - } -} - -func TestCreateArtifactoryWaitHandler(t *testing.T) { - tests := []struct { - name string - responses []response - wantState registry.ArtifactoryState - wantErr bool - }{ - { - name: "success immediately", - responses: []response{ - {state: ArtifactoryActive}, - }, - wantState: ArtifactoryActive, - wantErr: false, - }, - { - name: "success immediately healthy", - responses: []response{ - {state: ArtifactoryActive}, - }, - wantState: ArtifactoryActive, - wantErr: false, - }, - { - name: "success delayed", - responses: []response{ - {state: ArtifactoryReconciling}, - {state: ArtifactoryReconciling}, - {state: ArtifactoryActive}, - }, - wantState: ArtifactoryActive, - wantErr: false, - }, - { - name: "error state", - responses: []response{ - {state: ArtifactoryError}, - }, - wantErr: true, - }, - { - name: "api error", - responses: []response{ - {status: http.StatusInternalServerError}, - }, - wantErr: true, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - synctest.Test(t, func(t *testing.T) { - mock := newAPIMock(&mockSettings{responses: tt.responses}) - handler := CreateArtifactoryWaitHandler(context.Background(), mock, testProjectId, testRegionId, testArtifactoryId) - handler.SetSleepBeforeWait(0) - handler.SetThrottle(10 * time.Millisecond) - - got, err := handler.WaitWithContext(context.Background()) - if (err != nil) != tt.wantErr { - t.Fatalf("WaitWithContext() error = %v, wantErr %v", err, tt.wantErr) - } - if !tt.wantErr && got.State != tt.wantState { - t.Fatalf("WaitWithContext() state = %v, want %v", got.State, tt.wantState) - } - }) - }) - } -} - -func TestUpdateArtifactoryWaitHandler(t *testing.T) { - tests := []struct { - name string - responses []response - wantState registry.ArtifactoryState - wantErr bool - }{ - { - name: "success immediately", - responses: []response{ - {state: ArtifactoryActive}, - }, - wantState: ArtifactoryActive, - wantErr: false, - }, - { - name: "success delayed with healthy state", - responses: []response{ - {state: ArtifactoryReconciling}, - {state: ArtifactoryActive}, - }, - wantState: ArtifactoryActive, - wantErr: false, - }, - { - name: "error state", - responses: []response{ - {state: ArtifactoryError}, - }, - wantErr: true, - }, - { - name: "api error", - responses: []response{ - {status: http.StatusInternalServerError}, - }, - wantErr: true, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - synctest.Test(t, func(t *testing.T) { - mock := newAPIMock(&mockSettings{responses: tt.responses}) - handler := UpdateArtifactoryWaitHandler(context.Background(), mock, testProjectId, testRegionId, testArtifactoryId) - handler.SetSleepBeforeWait(0) - handler.SetThrottle(10 * time.Millisecond) - - got, err := handler.WaitWithContext(context.Background()) - if (err != nil) != tt.wantErr { - t.Fatalf("WaitWithContext() error = %v, wantErr %v", err, tt.wantErr) - } - if !tt.wantErr && got.State != tt.wantState { - t.Fatalf("WaitWithContext() state = %v, want %v", got.State, tt.wantState) - } - }) - }) - } -} - -func TestDeleteArtifactoryWaitHandler(t *testing.T) { - tests := []struct { - name string - responses []response - wantErr bool - }{ - { - name: "success immediately on 404", - responses: []response{ - {status: http.StatusNotFound}, - }, - wantErr: false, - }, - { - name: "success delayed after reconciling", - responses: []response{ - {state: ArtifactoryReconciling}, - {status: http.StatusNotFound}, - }, - wantErr: false, - }, - { - name: "error state", - responses: []response{ - {state: ArtifactoryError}, - }, - wantErr: true, - }, - { - name: "api error", - responses: []response{ - {status: http.StatusInternalServerError}, - }, - wantErr: true, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - synctest.Test(t, func(t *testing.T) { - mock := newAPIMock(&mockSettings{responses: tt.responses}) - handler := DeleteArtifactoryWaitHandler(context.Background(), mock, testProjectId, testRegionId, testArtifactoryId) - handler.SetSleepBeforeWait(0) - handler.SetThrottle(10 * time.Millisecond) - - _, err := handler.WaitWithContext(context.Background()) - if (err != nil) != tt.wantErr { - t.Fatalf("WaitWithContext() error = %v, wantErr %v", err, tt.wantErr) - } - }) - }) - } -} - -func TestGetStateArtifactory(t *testing.T) { - tests := []struct { - name string - resp *registry.Artifactory - want registry.ArtifactoryState - wantErr bool - }{ - { - name: "nil response", - resp: nil, - wantErr: true, - }, - { - name: "valid state", - resp: ®istry.Artifactory{ - State: ArtifactoryActive, - }, - want: ArtifactoryActive, - wantErr: false, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got, err := getStateArtifactory(tt.resp) - if (err != nil) != tt.wantErr { - t.Fatalf("getStateArtifactory() error = %v, wantErr %v", err, tt.wantErr) - } - if got != tt.want { - t.Fatalf("getStateArtifactory() = %v, want %v", got, tt.want) - } - }) - } -}