diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b24baeb7..a12a08ce8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,8 +57,11 @@ - **Dependencies:** Bump `github.com/golang-jwt/jwt/v5` from `v5.2.2` to `v5.2.3` - `serviceenablement`: [v1.2.2](services/serviceenablement/CHANGELOG.md#v122) - **Dependencies:** Bump `github.com/golang-jwt/jwt/v5` from `v5.2.2` to `v5.2.3` -- `ske`: [v1.1.1](services/ske/CHANGELOG.md#v111) - - **Dependencies:** Bump `github.com/golang-jwt/jwt/v5` from `v5.2.2` to `v5.2.3` +- `ske`: + - [v1.2.0](services/ske/CHANGELOG.md#v120) + - **Feature:** Add new method `TriggerWakeup` + - [v1.1.1](services/ske/CHANGELOG.md#v111) + - **Dependencies:** Bump `github.com/golang-jwt/jwt/v5` from `v5.2.2` to `v5.2.3` - `sqlserverflex`: [v1.3.1](services/sqlserverflex/CHANGELOG.md#v131) - **Dependencies:** Bump `github.com/golang-jwt/jwt/v5` from `v5.2.2` to `v5.2.3` - `stackitmarketplace`: [v1.6.1](services/stackitmarketplace/CHANGELOG.md#v161) diff --git a/services/ske/CHANGELOG.md b/services/ske/CHANGELOG.md index 81d66ca13..386e7abde 100644 --- a/services/ske/CHANGELOG.md +++ b/services/ske/CHANGELOG.md @@ -1,3 +1,6 @@ +## v1.2.0 + - **Feature:** Add new method `TriggerWakeup` + ## v1.1.1 - **Dependencies:** Bump `github.com/golang-jwt/jwt/v5` from `v5.2.2` to `v5.2.3` diff --git a/services/ske/VERSION b/services/ske/VERSION index 9cb4db99b..0408c30b4 100644 --- a/services/ske/VERSION +++ b/services/ske/VERSION @@ -1 +1 @@ -v1.1.1 \ No newline at end of file +v1.2.0 \ No newline at end of file diff --git a/services/ske/api_default.go b/services/ske/api_default.go index 74a2d99ca..c3d9980e5 100644 --- a/services/ske/api_default.go +++ b/services/ske/api_default.go @@ -282,6 +282,28 @@ type DefaultApi interface { */ TriggerReconcileExecute(ctx context.Context, projectId string, region string, clusterName string) (map[string]interface{}, error) + /* + TriggerWakeup Trigger cluster wakeup + Trigger immediate wake up of the cluster. If the cluster is already in running state, the method does nothing. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param projectId + @param region + @param clusterName + @return ApiTriggerWakeupRequest + */ + TriggerWakeup(ctx context.Context, projectId string, region string, clusterName string) ApiTriggerWakeupRequest + /* + TriggerWakeupExecute executes the request + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param projectId + @param region + @param clusterName + @return map[string]interface{} + + */ + TriggerWakeupExecute(ctx context.Context, projectId string, region string, clusterName string) (map[string]interface{}, error) } type ApiCompleteCredentialsRotationRequest interface { @@ -334,6 +356,10 @@ type ApiTriggerReconcileRequest interface { Execute() (map[string]interface{}, error) } +type ApiTriggerWakeupRequest interface { + Execute() (map[string]interface{}, error) +} + // DefaultApiService DefaultApi service type DefaultApiService service @@ -2352,3 +2378,175 @@ func (a *APIClient) TriggerReconcileExecute(ctx context.Context, projectId strin } return r.Execute() } + +type TriggerWakeupRequest struct { + ctx context.Context + apiService *DefaultApiService + projectId string + region string + clusterName string +} + +func (r TriggerWakeupRequest) Execute() (map[string]interface{}, error) { + var ( + localVarHTTPMethod = http.MethodPost + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue map[string]interface{} + ) + a := r.apiService + client, ok := a.client.(*APIClient) + if !ok { + return localVarReturnValue, fmt.Errorf("could not parse client to type APIClient") + } + localBasePath, err := client.cfg.ServerURLWithContext(r.ctx, "DefaultApiService.TriggerWakeup") + if err != nil { + return localVarReturnValue, &oapierror.GenericOpenAPIError{ErrorMessage: err.Error()} + } + + localVarPath := localBasePath + "/v2/projects/{projectId}/regions/{region}/clusters/{clusterName}/wakeup" + localVarPath = strings.Replace(localVarPath, "{"+"projectId"+"}", url.PathEscape(ParameterValueToString(r.projectId, "projectId")), -1) + localVarPath = strings.Replace(localVarPath, "{"+"region"+"}", url.PathEscape(ParameterValueToString(r.region, "region")), -1) + localVarPath = strings.Replace(localVarPath, "{"+"clusterName"+"}", url.PathEscape(ParameterValueToString(r.clusterName, "clusterName")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, err + } + + contextHTTPRequest, ok := r.ctx.Value(config.ContextHTTPRequest).(**http.Request) + if ok { + *contextHTTPRequest = req + } + + localVarHTTPResponse, err := client.callAPI(req) + contextHTTPResponse, ok := r.ctx.Value(config.ContextHTTPResponse).(**http.Response) + if ok { + *contextHTTPResponse = localVarHTTPResponse + } + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &oapierror.GenericOpenAPIError{ + StatusCode: localVarHTTPResponse.StatusCode, + Body: localVarBody, + ErrorMessage: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v map[string]interface{} + err = client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.ErrorMessage = err.Error() + return localVarReturnValue, newErr + } + newErr.ErrorMessage = oapierror.FormatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.Model = v + return localVarReturnValue, newErr + } + if localVarHTTPResponse.StatusCode == 401 { + var v map[string]interface{} + err = client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.ErrorMessage = err.Error() + return localVarReturnValue, newErr + } + newErr.ErrorMessage = oapierror.FormatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.Model = v + return localVarReturnValue, newErr + } + if localVarHTTPResponse.StatusCode == 404 { + var v map[string]interface{} + err = client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.ErrorMessage = err.Error() + return localVarReturnValue, newErr + } + newErr.ErrorMessage = oapierror.FormatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.Model = v + return localVarReturnValue, newErr + } + var v RuntimeError + err = client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.ErrorMessage = err.Error() + return localVarReturnValue, newErr + } + newErr.ErrorMessage = oapierror.FormatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.Model = v + return localVarReturnValue, newErr + } + + err = client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &oapierror.GenericOpenAPIError{ + StatusCode: localVarHTTPResponse.StatusCode, + Body: localVarBody, + ErrorMessage: err.Error(), + } + return localVarReturnValue, newErr + } + + return localVarReturnValue, nil +} + +/* +TriggerWakeup: Trigger cluster wakeup + +Trigger immediate wake up of the cluster. If the cluster is already in running state, the method does nothing. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param projectId + @param region + @param clusterName + @return ApiTriggerWakeupRequest +*/ +func (a *APIClient) TriggerWakeup(ctx context.Context, projectId string, region string, clusterName string) ApiTriggerWakeupRequest { + return TriggerWakeupRequest{ + apiService: a.defaultApi, + ctx: ctx, + projectId: projectId, + region: region, + clusterName: clusterName, + } +} + +func (a *APIClient) TriggerWakeupExecute(ctx context.Context, projectId string, region string, clusterName string) (map[string]interface{}, error) { + r := TriggerWakeupRequest{ + apiService: a.defaultApi, + ctx: ctx, + projectId: projectId, + region: region, + clusterName: clusterName, + } + return r.Execute() +} diff --git a/services/ske/api_default_test.go b/services/ske/api_default_test.go index cf52e5b88..9a0567cda 100644 --- a/services/ske/api_default_test.go +++ b/services/ske/api_default_test.go @@ -712,4 +712,62 @@ func Test_ske_DefaultApiService(t *testing.T) { } }) + t.Run("Test DefaultApiService TriggerWakeup", func(t *testing.T) { + _apiUrlPath := "/v2/projects/{projectId}/regions/{region}/clusters/{clusterName}/wakeup" + projectIdValue := "projectId-value" + _apiUrlPath = strings.Replace(_apiUrlPath, "{"+"projectId"+"}", url.PathEscape(ParameterValueToString(projectIdValue, "projectId")), -1) + regionValue := "region-value" + _apiUrlPath = strings.Replace(_apiUrlPath, "{"+"region"+"}", url.PathEscape(ParameterValueToString(regionValue, "region")), -1) + clusterNameValue := "clusterName-value" + _apiUrlPath = strings.Replace(_apiUrlPath, "{"+"clusterName"+"}", url.PathEscape(ParameterValueToString(clusterNameValue, "clusterName")), -1) + + testDefaultApiServeMux := http.NewServeMux() + testDefaultApiServeMux.HandleFunc(_apiUrlPath, func(w http.ResponseWriter, req *http.Request) { + data := map[string]interface{}{} + w.Header().Add("Content-Type", "application/json") + json.NewEncoder(w).Encode(data) + }) + testServer := httptest.NewServer(testDefaultApiServeMux) + defer testServer.Close() + + configuration := &config.Configuration{ + DefaultHeader: make(map[string]string), + UserAgent: "OpenAPI-Generator/1.0.0/go", + Debug: false, + Region: "test_region", + Servers: config.ServerConfigurations{ + { + URL: testServer.URL, + Description: "Localhost for ske_DefaultApi", + Variables: map[string]config.ServerVariable{ + "region": { + DefaultValue: "test_region.", + EnumValues: []string{ + "test_region.", + }, + }, + }, + }, + }, + OperationServers: map[string]config.ServerConfigurations{}, + } + apiClient, err := NewAPIClient(config.WithCustomConfiguration(configuration), config.WithoutAuthentication()) + if err != nil { + t.Fatalf("creating API client: %v", err) + } + + projectId := projectIdValue + region := regionValue + clusterName := clusterNameValue + + resp, reqErr := apiClient.TriggerWakeup(context.Background(), projectId, region, clusterName).Execute() + + if reqErr != nil { + t.Fatalf("error in call: %v", reqErr) + } + if IsNil(resp) { + t.Fatalf("response not present") + } + }) + }