feat(api): Added AppKey property to ShowAppInstances
All checks were successful
test / test (push) Successful in 55s
ci / goreleaser (push) Successful in 1m9s

This commit is contained in:
Patrick Sy 2025-11-13 15:40:36 +01:00
parent ece3dddfe6
commit a51e2ae454
Signed by: Patrick.Sy
GPG key ID: DDDC8EC51823195E
11 changed files with 35 additions and 25 deletions

View file

@ -45,12 +45,12 @@ func (c *Client) CreateAppInstance(ctx context.Context, input *NewAppInstanceInp
// ShowAppInstance retrieves a single application instance by key and region
// Maps to POST /auth/ctrl/ShowAppInst
func (c *Client) ShowAppInstance(ctx context.Context, appInstKey AppInstanceKey, region string) (AppInstance, error) {
func (c *Client) ShowAppInstance(ctx context.Context, appInstKey AppInstanceKey, appKey AppKey, region string) (AppInstance, error) {
transport := c.getTransport()
url := c.BaseURL + "/api/v1/auth/ctrl/ShowAppInst"
filter := AppInstanceFilter{
AppInstance: AppInstance{Key: appInstKey},
AppInstance: AppInstance{AppKey: appKey, Key: appInstKey},
Region: region,
}

View file

@ -156,6 +156,7 @@ func TestCreateAppInstance(t *testing.T) {
func TestShowAppInstance(t *testing.T) {
tests := []struct {
name string
appKey AppKey
appInstKey AppInstanceKey
region string
mockStatusCode int
@ -173,6 +174,7 @@ func TestShowAppInstance(t *testing.T) {
Name: "testcloudlet",
},
},
appKey: AppKey{Name: "test-app-id"},
region: "us-west",
mockStatusCode: 200,
mockResponse: `{"data": {"key": {"organization": "testorg", "name": "testinst", "cloudlet_key": {"organization": "cloudletorg", "name": "testcloudlet"}}, "state": "Ready"}}
@ -190,6 +192,7 @@ func TestShowAppInstance(t *testing.T) {
Name: "testcloudlet",
},
},
appKey: AppKey{Name: "test-app-id"},
region: "us-west",
mockStatusCode: 404,
mockResponse: "",
@ -219,7 +222,7 @@ func TestShowAppInstance(t *testing.T) {
// Execute test
ctx := context.Background()
appInst, err := client.ShowAppInstance(ctx, tt.appInstKey, tt.region)
appInst, err := client.ShowAppInstance(ctx, tt.appInstKey, tt.appKey, tt.region)
// Verify results
if tt.expectError {

View file

@ -47,7 +47,7 @@ func (c *Client) CreateAppInstance(ctx context.Context, input *NewAppInstanceInp
// ShowAppInstance retrieves a single application instance by key and region
// Maps to POST /auth/ctrl/ShowAppInst
func (c *Client) ShowAppInstance(ctx context.Context, appInstKey AppInstanceKey, region string) (AppInstance, error) {
func (c *Client) ShowAppInstance(ctx context.Context, appInstKey AppInstanceKey, appKey AppKey, region string) (AppInstance, error) {
transport := c.getTransport()
url := c.BaseURL + "/api/v1/auth/ctrl/ShowAppInst"

View file

@ -157,6 +157,7 @@ func TestShowAppInstance(t *testing.T) {
tests := []struct {
name string
appInstKey AppInstanceKey
appKey AppKey
region string
mockStatusCode int
mockResponse string
@ -173,6 +174,7 @@ func TestShowAppInstance(t *testing.T) {
Name: "testcloudlet",
},
},
appKey: AppKey{ Name: "testapp" },
region: "us-west",
mockStatusCode: 200,
mockResponse: `{"data": {"key": {"organization": "testorg", "name": "testinst", "cloudlet_key": {"organization": "cloudletorg", "name": "testcloudlet"}}, "state": "Ready"}}
@ -190,6 +192,7 @@ func TestShowAppInstance(t *testing.T) {
Name: "testcloudlet",
},
},
appKey: AppKey{ Name: "testapp" },
region: "us-west",
mockStatusCode: 404,
mockResponse: "",
@ -219,7 +222,7 @@ func TestShowAppInstance(t *testing.T) {
// Execute test
ctx := context.Background()
appInst, err := client.ShowAppInstance(ctx, tt.appInstKey, tt.region)
appInst, err := client.ShowAppInstance(ctx, tt.appInstKey, tt.appKey, tt.region)
// Verify results
if tt.expectError {

View file

@ -193,7 +193,7 @@ func runComprehensiveWorkflow(ctx context.Context, c *v2.Client, config Workflow
},
}
instanceDetails, err := waitForInstanceReady(ctx, c, instanceKey, config.Region, 5*time.Minute)
instanceDetails, err := waitForInstanceReady(ctx, c, instanceKey, v2.AppKey{}, config.Region, 5*time.Minute)
if err != nil {
return fmt.Errorf("failed to wait for instance ready: %w", err)
}
@ -306,7 +306,7 @@ func getEnvOrDefault(key, defaultValue string) string {
}
// waitForInstanceReady polls the instance status until it's no longer "Creating" or timeout
func waitForInstanceReady(ctx context.Context, c *v2.Client, instanceKey v2.AppInstanceKey, region string, timeout time.Duration) (v2.AppInstance, error) {
func waitForInstanceReady(ctx context.Context, c *v2.Client, instanceKey v2.AppInstanceKey, appKey v2.AppKey, region string, timeout time.Duration) (v2.AppInstance, error) {
timeoutCtx, cancel := context.WithTimeout(ctx, timeout)
defer cancel()
@ -321,7 +321,7 @@ func waitForInstanceReady(ctx context.Context, c *v2.Client, instanceKey v2.AppI
return v2.AppInstance{}, fmt.Errorf("timeout waiting for instance to be ready after %v", timeout)
case <-ticker.C:
instance, err := c.ShowAppInstance(timeoutCtx, instanceKey, region)
instance, err := c.ShowAppInstance(timeoutCtx, instanceKey, appKey, region)
if err != nil {
// Log error but continue polling
fmt.Printf(" ⚠️ Error checking instance state: %v\n", err)