Skip to content

Commit 60cdd58

Browse files
Enable regclient debug logging in gpuop-cfg validation
Signed-off-by: Karthik Vetrivel <kvetrivel@nvidia.com>
1 parent f86da6d commit 60cdd58

5 files changed

Lines changed: 66 additions & 22 deletions

File tree

cmd/gpuop-cfg/validate/clusterpolicy/clusterpolicy.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,15 @@ import (
2222
"io"
2323
"os"
2424

25+
"log/slog"
26+
27+
"github.com/regclient/regclient"
2528
"github.com/sirupsen/logrus"
2629
"github.com/urfave/cli/v3"
2730
"sigs.k8s.io/yaml"
2831

2932
v1 "github.com/NVIDIA/gpu-operator/api/nvidia/v1"
33+
"github.com/NVIDIA/gpu-operator/cmd/gpuop-cfg/validate/registry"
3034
)
3135

3236
type command struct {
@@ -83,7 +87,13 @@ func (m command) run(ctx context.Context, opts *options) error {
8387
return fmt.Errorf("failed to load clusterpolicy spec: %v", err)
8488
}
8589

86-
err = validateImages(ctx, &cp.Spec)
90+
var rcOpts []regclient.Opt
91+
if m.logger.GetLevel() >= logrus.DebugLevel {
92+
rcOpts = append(rcOpts, regclient.WithSlog(slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: slog.LevelDebug}))))
93+
}
94+
client := registry.NewClient(rcOpts...)
95+
96+
err = validateImages(ctx, &cp.Spec, client)
8797
if err != nil {
8898
return fmt.Errorf("failed to validate images: %v", err)
8999
}

cmd/gpuop-cfg/validate/clusterpolicy/images.go

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import (
2626
v1 "github.com/NVIDIA/gpu-operator/api/nvidia/v1"
2727
)
2828

29-
func validateImages(ctx context.Context, spec *v1.ClusterPolicySpec) error {
29+
func validateImages(ctx context.Context, spec *v1.ClusterPolicySpec, client *regclient.RegClient) error {
3030
// Driver
3131
path, err := v1.ImagePath(&spec.Driver)
3232
if err != nil {
@@ -35,7 +35,7 @@ func validateImages(ctx context.Context, spec *v1.ClusterPolicySpec) error {
3535
// For driver, we must append the os-tag
3636
path += "-ubuntu22.04"
3737

38-
err = validateImage(ctx, path)
38+
err = validateImage(ctx, client, path)
3939
if err != nil {
4040
return fmt.Errorf("failed to validate image %s: %v", path, err)
4141
}
@@ -46,7 +46,7 @@ func validateImages(ctx context.Context, spec *v1.ClusterPolicySpec) error {
4646
return fmt.Errorf("failed to construct the image path: %v", err)
4747
}
4848

49-
err = validateImage(ctx, path)
49+
err = validateImage(ctx, client, path)
5050
if err != nil {
5151
return fmt.Errorf("failed to validate image %s: %v", path, err)
5252
}
@@ -57,7 +57,7 @@ func validateImages(ctx context.Context, spec *v1.ClusterPolicySpec) error {
5757
return fmt.Errorf("failed to construct the image path: %v", err)
5858
}
5959

60-
err = validateImage(ctx, path)
60+
err = validateImage(ctx, client, path)
6161
if err != nil {
6262
return fmt.Errorf("failed to validate image %s: %v", path, err)
6363
}
@@ -68,7 +68,7 @@ func validateImages(ctx context.Context, spec *v1.ClusterPolicySpec) error {
6868
return fmt.Errorf("failed to construct the image path: %v", err)
6969
}
7070

71-
err = validateImage(ctx, path)
71+
err = validateImage(ctx, client, path)
7272
if err != nil {
7373
return fmt.Errorf("failed to validate image %s: %v", path, err)
7474
}
@@ -79,7 +79,7 @@ func validateImages(ctx context.Context, spec *v1.ClusterPolicySpec) error {
7979
return fmt.Errorf("failed to construct the image path: %v", err)
8080
}
8181

82-
err = validateImage(ctx, path)
82+
err = validateImage(ctx, client, path)
8383
if err != nil {
8484
return fmt.Errorf("failed to validate image %s: %v", path, err)
8585
}
@@ -90,7 +90,7 @@ func validateImages(ctx context.Context, spec *v1.ClusterPolicySpec) error {
9090
return fmt.Errorf("failed to construct the image path: %v", err)
9191
}
9292

93-
err = validateImage(ctx, path)
93+
err = validateImage(ctx, client, path)
9494
if err != nil {
9595
return fmt.Errorf("failed to validate image %s: %v", path, err)
9696
}
@@ -101,7 +101,7 @@ func validateImages(ctx context.Context, spec *v1.ClusterPolicySpec) error {
101101
return fmt.Errorf("failed to construct the image path: %v", err)
102102
}
103103

104-
err = validateImage(ctx, path)
104+
err = validateImage(ctx, client, path)
105105
if err != nil {
106106
return fmt.Errorf("failed to validate image %s: %v", path, err)
107107
}
@@ -114,7 +114,7 @@ func validateImages(ctx context.Context, spec *v1.ClusterPolicySpec) error {
114114
// For GDS driver, we must append the os-tag
115115
path += "-ubuntu22.04"
116116

117-
err = validateImage(ctx, path)
117+
err = validateImage(ctx, client, path)
118118
if err != nil {
119119
return fmt.Errorf("failed to validate image %s: %v", path, err)
120120
}
@@ -125,7 +125,7 @@ func validateImages(ctx context.Context, spec *v1.ClusterPolicySpec) error {
125125
return fmt.Errorf("failed to construct the image path: %v", err)
126126
}
127127

128-
err = validateImage(ctx, path)
128+
err = validateImage(ctx, client, path)
129129
if err != nil {
130130
return fmt.Errorf("failed to validate image %s: %v", path, err)
131131
}
@@ -136,7 +136,7 @@ func validateImages(ctx context.Context, spec *v1.ClusterPolicySpec) error {
136136
return fmt.Errorf("failed to construct the image path: %v", err)
137137
}
138138

139-
err = validateImage(ctx, path)
139+
err = validateImage(ctx, client, path)
140140
if err != nil {
141141
return fmt.Errorf("failed to validate image %s: %v", path, err)
142142
}
@@ -147,16 +147,15 @@ func validateImages(ctx context.Context, spec *v1.ClusterPolicySpec) error {
147147
return fmt.Errorf("failed to construct the image path: %v", err)
148148
}
149149

150-
err = validateImage(ctx, path)
150+
err = validateImage(ctx, client, path)
151151
if err != nil {
152152
return fmt.Errorf("failed to validate image %s: %v", path, err)
153153
}
154154

155155
return nil
156156
}
157157

158-
func validateImage(ctx context.Context, path string) error {
159-
var client = regclient.New()
158+
func validateImage(ctx context.Context, client *regclient.RegClient, path string) error {
160159
ref, err := ref.New(path)
161160
if err != nil {
162161
return fmt.Errorf("failed to construct an image reference: %v", err)

cmd/gpuop-cfg/validate/csv/csv.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,16 @@ import (
2020
"context"
2121
"fmt"
2222
"io"
23+
"log/slog"
2324
"os"
2425

2526
"github.com/operator-framework/api/pkg/operators/v1alpha1"
27+
"github.com/regclient/regclient"
2628
"github.com/sirupsen/logrus"
2729
"github.com/urfave/cli/v3"
2830
"sigs.k8s.io/yaml"
31+
32+
"github.com/NVIDIA/gpu-operator/cmd/gpuop-cfg/validate/registry"
2933
)
3034

3135
type command struct {
@@ -82,7 +86,13 @@ func (m command) run(ctx context.Context, opts *options) error {
8286
return fmt.Errorf("failed to load csv yaml: %v", err)
8387
}
8488

85-
err = validateImages(ctx, csv)
89+
var rcOpts []regclient.Opt
90+
if m.logger.GetLevel() >= logrus.DebugLevel {
91+
rcOpts = append(rcOpts, regclient.WithSlog(slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: slog.LevelDebug}))))
92+
}
93+
client := registry.NewClient(rcOpts...)
94+
95+
err = validateImages(ctx, csv, client)
8696
if err != nil {
8797
return fmt.Errorf("failed to validate images: %v", err)
8898
}

cmd/gpuop-cfg/validate/csv/images.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ import (
2626
"github.com/regclient/regclient/types/ref"
2727
)
2828

29-
func validateImages(ctx context.Context, csv *v1alpha1.ClusterServiceVersion) error {
29+
func validateImages(ctx context.Context, csv *v1alpha1.ClusterServiceVersion, client *regclient.RegClient) error {
3030
// validate all 'relatedImages'
3131
images := csv.Spec.RelatedImages
3232
for _, image := range images {
33-
err := validateImage(ctx, image.Image)
33+
err := validateImage(ctx, client, image.Image)
3434
if err != nil {
3535
return fmt.Errorf("failed to validate image %s: %v", image.Name, err)
3636
}
@@ -41,7 +41,7 @@ func validateImages(ctx context.Context, csv *v1alpha1.ClusterServiceVersion) er
4141
ctr := deployment.Spec.Template.Spec.Containers[0]
4242

4343
// validate the gpu-operator image
44-
err := validateImage(ctx, ctr.Image)
44+
err := validateImage(ctx, client, ctr.Image)
4545
if err != nil {
4646
return fmt.Errorf("failed to validate image %s: %v", ctr.Image, err)
4747
}
@@ -51,7 +51,7 @@ func validateImages(ctx context.Context, csv *v1alpha1.ClusterServiceVersion) er
5151
if !strings.HasSuffix(env.Name, "_IMAGE") {
5252
continue
5353
}
54-
err = validateImage(ctx, env.Value)
54+
err = validateImage(ctx, client, env.Value)
5555
if err != nil {
5656
return fmt.Errorf("failed to validate image %s: %v", env.Name, err)
5757
}
@@ -60,8 +60,7 @@ func validateImages(ctx context.Context, csv *v1alpha1.ClusterServiceVersion) er
6060
return nil
6161
}
6262

63-
func validateImage(ctx context.Context, path string) error {
64-
var client = regclient.New()
63+
func validateImage(ctx context.Context, client *regclient.RegClient, path string) error {
6564
ref, err := ref.New(path)
6665
if err != nil {
6766
return fmt.Errorf("failed to construct an image reference: %v", err)
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
# Copyright (c), NVIDIA CORPORATION. All rights reserved.
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
**/
16+
17+
package registry
18+
19+
import (
20+
"github.com/regclient/regclient"
21+
)
22+
23+
// NewClient creates a regclient client with the provided options.
24+
func NewClient(opts ...regclient.Opt) *regclient.RegClient {
25+
return regclient.New(opts...)
26+
}

0 commit comments

Comments
 (0)