mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 13:37:30 +00:00
Return correct error type and HTTP Status code for operation errors
This commit is contained in:
parent
8770d12494
commit
808bc227ae
@ -6,7 +6,6 @@ go_library(
|
|||||||
"constants.go",
|
"constants.go",
|
||||||
"context.go",
|
"context.go",
|
||||||
"doc.go",
|
"doc.go",
|
||||||
"errors.go",
|
|
||||||
"gce_projects.go",
|
"gce_projects.go",
|
||||||
"gen.go",
|
"gen.go",
|
||||||
"op.go",
|
"op.go",
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2018 The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package cloud
|
|
||||||
|
|
||||||
import "fmt"
|
|
||||||
|
|
||||||
// OperationPollingError occurs when the GCE Operation cannot be retrieved for a prolonged period.
|
|
||||||
type OperationPollingError struct {
|
|
||||||
LastPollError error
|
|
||||||
}
|
|
||||||
|
|
||||||
// Error returns a string representation including the last poll error encountered.
|
|
||||||
func (e *OperationPollingError) Error() string {
|
|
||||||
return fmt.Sprintf("GCE operation polling error: %v", e.LastPollError)
|
|
||||||
}
|
|
||||||
|
|
||||||
// GCEOperationError occurs when the GCE Operation finishes with an error.
|
|
||||||
type GCEOperationError struct {
|
|
||||||
// HTTPStatusCode is the HTTP status code of the final error.
|
|
||||||
// For example, a failed operation may have 400 - BadRequest.
|
|
||||||
HTTPStatusCode int
|
|
||||||
// Code is GCE's code of what went wrong.
|
|
||||||
// For example, RESOURCE_IN_USE_BY_ANOTHER_RESOURCE
|
|
||||||
Code string
|
|
||||||
// Message is a human readable message.
|
|
||||||
// For example, "The network resource 'xxx' is already being used by 'xxx'"
|
|
||||||
Message string
|
|
||||||
}
|
|
||||||
|
|
||||||
// Error returns a string representation including the HTTP Status code, GCE's error code
|
|
||||||
// and a human readable message.
|
|
||||||
func (e *GCEOperationError) Error() string {
|
|
||||||
return fmt.Sprintf("GCE %v - %v: %v", e.HTTPStatusCode, e.Code, e.Message)
|
|
||||||
}
|
|
@ -25,6 +25,7 @@ import (
|
|||||||
alpha "google.golang.org/api/compute/v0.alpha"
|
alpha "google.golang.org/api/compute/v0.alpha"
|
||||||
beta "google.golang.org/api/compute/v0.beta"
|
beta "google.golang.org/api/compute/v0.beta"
|
||||||
ga "google.golang.org/api/compute/v1"
|
ga "google.golang.org/api/compute/v1"
|
||||||
|
"google.golang.org/api/googleapi"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta"
|
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta"
|
||||||
)
|
)
|
||||||
@ -85,7 +86,7 @@ func (o *gaOperation) isDone(ctx context.Context) (bool, error) {
|
|||||||
|
|
||||||
if op.Error != nil && len(op.Error.Errors) > 0 && op.Error.Errors[0] != nil {
|
if op.Error != nil && len(op.Error.Errors) > 0 && op.Error.Errors[0] != nil {
|
||||||
e := op.Error.Errors[0]
|
e := op.Error.Errors[0]
|
||||||
o.err = &GCEOperationError{HTTPStatusCode: op.HTTPStatusCode, Code: e.Code, Message: e.Message}
|
o.err = &googleapi.Error{Code: int(op.HttpErrorStatusCode), Message: fmt.Sprintf("%v - %v", e.Code, e.Message)}
|
||||||
}
|
}
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
@ -142,7 +143,7 @@ func (o *alphaOperation) isDone(ctx context.Context) (bool, error) {
|
|||||||
|
|
||||||
if op.Error != nil && len(op.Error.Errors) > 0 && op.Error.Errors[0] != nil {
|
if op.Error != nil && len(op.Error.Errors) > 0 && op.Error.Errors[0] != nil {
|
||||||
e := op.Error.Errors[0]
|
e := op.Error.Errors[0]
|
||||||
o.err = &GCEOperationError{HTTPStatusCode: op.HTTPStatusCode, Code: e.Code, Message: e.Message}
|
o.err = &googleapi.Error{Code: int(op.HttpErrorStatusCode), Message: fmt.Sprintf("%v - %v", e.Code, e.Message)}
|
||||||
}
|
}
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
@ -199,7 +200,7 @@ func (o *betaOperation) isDone(ctx context.Context) (bool, error) {
|
|||||||
|
|
||||||
if op.Error != nil && len(op.Error.Errors) > 0 && op.Error.Errors[0] != nil {
|
if op.Error != nil && len(op.Error.Errors) > 0 && op.Error.Errors[0] != nil {
|
||||||
e := op.Error.Errors[0]
|
e := op.Error.Errors[0]
|
||||||
o.err = &GCEOperationError{HTTPStatusCode: op.HTTPStatusCode, Code: e.Code, Message: e.Message}
|
o.err = &googleapi.Error{Code: int(op.HttpErrorStatusCode), Message: fmt.Sprintf("%v - %v", e.Code, e.Message)}
|
||||||
}
|
}
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user