From 465d3bb65b97e9476580924279b33a015ed04824 Mon Sep 17 00:00:00 2001 From: Alexey Fomenko Date: Mon, 9 Oct 2023 10:44:59 +0300 Subject: [PATCH 1/2] DRA: notify ResourceClaim or ResourceClass of wrong params --- .../controller/controller.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/staging/src/k8s.io/dynamic-resource-allocation/controller/controller.go b/staging/src/k8s.io/dynamic-resource-allocation/controller/controller.go index da2941191cf..63cfb0765fc 100644 --- a/staging/src/k8s.io/dynamic-resource-allocation/controller/controller.go +++ b/staging/src/k8s.io/dynamic-resource-allocation/controller/controller.go @@ -348,7 +348,6 @@ func (ctrl *controller) Run(workers int) { var errRequeue = errors.New("requeue") // errPeriodic is a special error instance that functions can return -// to request silent instance that functions can return // to request silent retrying at a fixed rate. var errPeriodic = errors.New("periodic") @@ -527,8 +526,9 @@ func (ctrl *controller) syncClaim(ctx context.Context, claim *resourcev1alpha2.R return errRequeue } - // Check parameters. - claimParameters, classParameters, err := ctrl.getParameters(ctx, claim, class) + // Check parameters. Do not record event to Claim if its parameters are invalid, + // syncKey will record the error. + claimParameters, classParameters, err := ctrl.getParameters(ctx, claim, class, false) if err != nil { return err } @@ -549,14 +549,18 @@ func (ctrl *controller) syncClaim(ctx context.Context, claim *resourcev1alpha2.R return nil } -func (ctrl *controller) getParameters(ctx context.Context, claim *resourcev1alpha2.ResourceClaim, class *resourcev1alpha2.ResourceClass) (claimParameters, classParameters interface{}, err error) { +func (ctrl *controller) getParameters(ctx context.Context, claim *resourcev1alpha2.ResourceClaim, class *resourcev1alpha2.ResourceClass, notifyClaim bool) (claimParameters, classParameters interface{}, err error) { classParameters, err = ctrl.driver.GetClassParameters(ctx, class) if err != nil { + ctrl.eventRecorder.Event(class, v1.EventTypeWarning, "Failed", err.Error()) err = fmt.Errorf("class parameters %s: %v", class.ParametersRef, err) return } claimParameters, err = ctrl.driver.GetClaimParameters(ctx, claim, class, classParameters) if err != nil { + if notifyClaim { + ctrl.eventRecorder.Event(claim, v1.EventTypeWarning, "Failed", err.Error()) + } err = fmt.Errorf("claim parameters %s: %v", claim.Spec.ParametersRef, err) return } @@ -674,9 +678,10 @@ func (ctrl *controller) checkPodClaim(ctx context.Context, pod *v1.Pod, podClaim if class.DriverName != ctrl.name { return nil, nil } - // Check parameters. - claimParameters, classParameters, err := ctrl.getParameters(ctx, claim, class) + // Check parameters. Record event to claim and pod if parameters are invalid. + claimParameters, classParameters, err := ctrl.getParameters(ctx, claim, class, true) if err != nil { + ctrl.eventRecorder.Event(pod, v1.EventTypeWarning, "Failed", fmt.Sprintf("claim %v: %v", claim.Name, err.Error())) return nil, err } return &ClaimAllocation{ From 080fe8346da3182778830c25f79ee5dd2cc9c589 Mon Sep 17 00:00:00 2001 From: Alexey Fomenko Date: Mon, 30 Oct 2023 16:36:43 +0200 Subject: [PATCH 2/2] Fix typos in interface comments --- .../dynamic-resource-allocation/controller/controller.go | 2 +- staging/src/k8s.io/kubelet/pkg/apis/dra/v1alpha3/api.pb.go | 4 ++-- staging/src/k8s.io/kubelet/pkg/apis/dra/v1alpha3/api.proto | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/staging/src/k8s.io/dynamic-resource-allocation/controller/controller.go b/staging/src/k8s.io/dynamic-resource-allocation/controller/controller.go index 63cfb0765fc..8d3512b89a8 100644 --- a/staging/src/k8s.io/dynamic-resource-allocation/controller/controller.go +++ b/staging/src/k8s.io/dynamic-resource-allocation/controller/controller.go @@ -94,7 +94,7 @@ type Driver interface { // If selectedNode is set, the driver must attempt to allocate for that // node. If that is not possible, it must return an error. The // controller will call UnsuitableNodes and pass the new information to - // the scheduler, which then will lead to selecting a diffent node + // the scheduler, which then will lead to selecting a different node // if the current one is not suitable. // // The Claim, ClaimParameters, Class, ClassParameters fields of "claims" parameter diff --git a/staging/src/k8s.io/kubelet/pkg/apis/dra/v1alpha3/api.pb.go b/staging/src/k8s.io/kubelet/pkg/apis/dra/v1alpha3/api.pb.go index 6d0310cabd3..92233f98ee9 100644 --- a/staging/src/k8s.io/kubelet/pkg/apis/dra/v1alpha3/api.pb.go +++ b/staging/src/k8s.io/kubelet/pkg/apis/dra/v1alpha3/api.pb.go @@ -482,7 +482,7 @@ const _ = grpc.SupportPackageIsVersion4 type NodeClient interface { // NodePrepareResources prepares several ResourceClaims // for use on the node. If an error is returned, the - // response is ignored. Failures for individidual claims + // response is ignored. Failures for individual claims // can be reported inside NodePrepareResourcesResponse. NodePrepareResources(ctx context.Context, in *NodePrepareResourcesRequest, opts ...grpc.CallOption) (*NodePrepareResourcesResponse, error) // NodeUnprepareResources is the opposite of NodePrepareResources. @@ -520,7 +520,7 @@ func (c *nodeClient) NodeUnprepareResources(ctx context.Context, in *NodeUnprepa type NodeServer interface { // NodePrepareResources prepares several ResourceClaims // for use on the node. If an error is returned, the - // response is ignored. Failures for individidual claims + // response is ignored. Failures for individual claims // can be reported inside NodePrepareResourcesResponse. NodePrepareResources(context.Context, *NodePrepareResourcesRequest) (*NodePrepareResourcesResponse, error) // NodeUnprepareResources is the opposite of NodePrepareResources. diff --git a/staging/src/k8s.io/kubelet/pkg/apis/dra/v1alpha3/api.proto b/staging/src/k8s.io/kubelet/pkg/apis/dra/v1alpha3/api.proto index 567842711be..c729aaf2714 100644 --- a/staging/src/k8s.io/kubelet/pkg/apis/dra/v1alpha3/api.proto +++ b/staging/src/k8s.io/kubelet/pkg/apis/dra/v1alpha3/api.proto @@ -34,7 +34,7 @@ option (gogoproto.goproto_unrecognized_all) = false; service Node { // NodePrepareResources prepares several ResourceClaims // for use on the node. If an error is returned, the - // response is ignored. Failures for individidual claims + // response is ignored. Failures for individual claims // can be reported inside NodePrepareResourcesResponse. rpc NodePrepareResources (NodePrepareResourcesRequest) returns (NodePrepareResourcesResponse) {}