Skip to content

Commit 50137d2

Browse files
feat: 911 helm resource repo (#2130)
<!-- markdownlint-disable MD041 --> #### What this PR does / why we need it This PR tied the helm ResourceRepository changes together and updates the spec location changes. Follow up of #2128 `cli` and `transfer` are refactored to use the new Helm ResourceRepository. Also removes the deprecated `Access` and `ResourceConsumerIdentityProvider` #### Which issue(s) this PR fixes Contributes open-component-model/ocm-project#911 #### Testing ##### How to test the changes Check comment: #2130 (comment) ##### Verification - [x] I have tested the changes locally by running `ocm` --------- Signed-off-by: Matthias Bruns <git@matthiasbruns.com>
1 parent c80ac5d commit 50137d2

13 files changed

Lines changed: 234 additions & 19 deletions

File tree

cli/cmd/transfer/component-version/internal/graph.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
dagsync "ocm.software/open-component-model/bindings/go/dag/sync"
1111
descruntime "ocm.software/open-component-model/bindings/go/descriptor/runtime"
1212
descriptorv2 "ocm.software/open-component-model/bindings/go/descriptor/v2"
13-
helmv1 "ocm.software/open-component-model/bindings/go/helm/access/spec/v1"
13+
helmv1 "ocm.software/open-component-model/bindings/go/helm/spec/access/v1"
1414
"ocm.software/open-component-model/bindings/go/oci/compref"
1515
ociv1 "ocm.software/open-component-model/bindings/go/oci/spec/access/v1"
1616
"ocm.software/open-component-model/bindings/go/oci/spec/repository/v1/oci"

cli/cmd/transfer/component-version/internal/scheme.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package internal
22

33
import (
44
descriptorv2 "ocm.software/open-component-model/bindings/go/descriptor/v2"
5-
helm "ocm.software/open-component-model/bindings/go/helm/access"
5+
helm "ocm.software/open-component-model/bindings/go/helm/spec/access"
66
oci "ocm.software/open-component-model/bindings/go/oci/spec/access"
77
"ocm.software/open-component-model/bindings/go/oci/spec/repository"
88
"ocm.software/open-component-model/bindings/go/runtime"

cli/go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ require (
2525
ocm.software/open-component-model/bindings/go/descriptor/normalisation v0.0.0-20260416102202-f251beded4be
2626
ocm.software/open-component-model/bindings/go/descriptor/runtime v0.0.0-20260416102202-f251beded4be
2727
ocm.software/open-component-model/bindings/go/descriptor/v2 v2.0.3-alpha2
28-
ocm.software/open-component-model/bindings/go/helm v0.0.0-20260416102202-f251beded4be
28+
ocm.software/open-component-model/bindings/go/helm v0.0.0-20260416135310-843620e997c3
2929
ocm.software/open-component-model/bindings/go/input/dir v0.0.2
3030
ocm.software/open-component-model/bindings/go/input/file v0.0.3
3131
ocm.software/open-component-model/bindings/go/input/utf8 v0.0.0-20260416102202-f251beded4be
@@ -35,7 +35,7 @@ require (
3535
ocm.software/open-component-model/bindings/go/rsa v0.0.0-20260416102202-f251beded4be
3636
ocm.software/open-component-model/bindings/go/runtime v0.0.7
3737
ocm.software/open-component-model/bindings/go/signing v0.0.0-20260416102202-f251beded4be
38-
ocm.software/open-component-model/bindings/go/transfer v0.0.0-20260416102202-f251beded4be
38+
ocm.software/open-component-model/bindings/go/transfer v0.0.0-20260416135310-843620e997c3
3939
ocm.software/open-component-model/bindings/go/transform v0.0.0-20260416102202-f251beded4be
4040
sigs.k8s.io/yaml v1.6.0
4141
)

cli/go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -399,8 +399,8 @@ ocm.software/open-component-model/bindings/go/descriptor/runtime v0.0.0-20260416
399399
ocm.software/open-component-model/bindings/go/descriptor/runtime v0.0.0-20260416102202-f251beded4be/go.mod h1:gB2z/xXiBqridb+jfkKgukfCP8y6+EhNylCNAK3iVWY=
400400
ocm.software/open-component-model/bindings/go/descriptor/v2 v2.0.3-alpha2 h1:loFXVXXXgCaBlpzs7gPizIopzyB3+SXIWHou8Xlp3Mc=
401401
ocm.software/open-component-model/bindings/go/descriptor/v2 v2.0.3-alpha2/go.mod h1:FTKrAPkR0865aUlDBrzmmHTdFxuy7AbqQZrgG6pB9YY=
402-
ocm.software/open-component-model/bindings/go/helm v0.0.0-20260416102202-f251beded4be h1:KMBlJvXiPAnxi2/BJGVqHUPMJo1eRiw3ofAqgizeEPU=
403-
ocm.software/open-component-model/bindings/go/helm v0.0.0-20260416102202-f251beded4be/go.mod h1:BKbb290bzvHwrf055/K4fYOg7hZDAfG67XyTGuRUJdw=
402+
ocm.software/open-component-model/bindings/go/helm v0.0.0-20260416135310-843620e997c3 h1:xsAlqdfhq+qHBDTTejhbvA1mxVi8UmUzAZqz9uAAZQc=
403+
ocm.software/open-component-model/bindings/go/helm v0.0.0-20260416135310-843620e997c3/go.mod h1:ASQNijdztYMrnAwFa/7krMEWYwoDRrAV6atOYFgU6E8=
404404
ocm.software/open-component-model/bindings/go/input/dir v0.0.2 h1:5n9k0J0W5jDWuzf2uhuzQKnNeqMwBDHop0mAfv4naiw=
405405
ocm.software/open-component-model/bindings/go/input/dir v0.0.2/go.mod h1:3qfxxgMZRSsp6aeiRirkaXSuIZ5oJF1ViUbVGTw1F6U=
406406
ocm.software/open-component-model/bindings/go/input/file v0.0.3 h1:fOs+mpqEIwCtR8qYGbUQrh4E9m8S47tH9GD6/dPPKO4=
@@ -419,8 +419,8 @@ ocm.software/open-component-model/bindings/go/runtime v0.0.7 h1:/4RDxVVubr6IC+ZK
419419
ocm.software/open-component-model/bindings/go/runtime v0.0.7/go.mod h1:hbas6Al4VECYKFk51SLIi8zdzhFgZ2WvFpPljatbJHo=
420420
ocm.software/open-component-model/bindings/go/signing v0.0.0-20260416102202-f251beded4be h1:XCyyRfCE60i7j/4UVRJoWqyQ71QsnmhLLYbz3bG9Qpk=
421421
ocm.software/open-component-model/bindings/go/signing v0.0.0-20260416102202-f251beded4be/go.mod h1:5hOzMcTYbRT+A9ffAPDSNDomqwVGxeik4SQKDIewoTQ=
422-
ocm.software/open-component-model/bindings/go/transfer v0.0.0-20260416102202-f251beded4be h1:2CgKpryQ6pxJ1BhLJIg/oIYue4fsn5hh9zlJ4lrwXbA=
423-
ocm.software/open-component-model/bindings/go/transfer v0.0.0-20260416102202-f251beded4be/go.mod h1:bRxlcBg5mYi+6T29OcdXgYKEj55O/REbOAeJhYVLgOQ=
422+
ocm.software/open-component-model/bindings/go/transfer v0.0.0-20260416135310-843620e997c3 h1:fT70yEavgnajvTx7nh57m3Bl87rQfsLWLYPq0/tbZ+w=
423+
ocm.software/open-component-model/bindings/go/transfer v0.0.0-20260416135310-843620e997c3/go.mod h1:oiUONPR0duQNO8fW3659rXwKvtpyPEZTHiDsEprTWqA=
424424
ocm.software/open-component-model/bindings/go/transform v0.0.0-20260416102202-f251beded4be h1:bTcweHJx50oysa93Yo/mLNFSlEbRmjFk6BocBbuA04k=
425425
ocm.software/open-component-model/bindings/go/transform v0.0.0-20260416102202-f251beded4be/go.mod h1:QOu13NEBqdp4oozQupCH1dwTncn/uH64+2uU5g3HLng=
426426
oras.land/oras-go/v2 v2.6.0 h1:X4ELRsiGkrbeox69+9tzTu492FMUu7zJQW6eJU+I2oc=

cli/integration/add_component_version_integration_test.go

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -604,3 +604,101 @@ func Test_Integration_HelmInput_RemoteRepository(t *testing.T) {
604604
layout := internal.ParseHelmOCILayout(t, downloadDir)
605605
layout.AssertHelmChartLayer(t)
606606
}
607+
608+
// Test_Integration_AddComponentVersion_HelmAccess verifies that a component version
609+
// with a helm access resource (remote chart reference) can be added to an OCI registry.
610+
// This exercises the Helm ResourceRepository plugin for resolving helm access types.
611+
func Test_Integration_AddComponentVersion_HelmAccess(t *testing.T) {
612+
t.Parallel()
613+
r := require.New(t)
614+
ctx := t.Context()
615+
616+
root := getRepoRootBasedOnGit(t)
617+
chartDir := filepath.Join(root, "bindings/go/helm/testdata/provenance")
618+
_, err := os.Stat(filepath.Join(chartDir, "mychart-0.1.0.tgz"))
619+
r.NoError(err, "test helm chart should exist")
620+
621+
srv := httptest.NewServer(http.FileServer(http.Dir(chartDir)))
622+
t.Cleanup(srv.Close)
623+
624+
registry, err := internal.CreateOCIRegistry(t)
625+
r.NoError(err)
626+
627+
cfg := fmt.Sprintf(`
628+
type: generic.config.ocm.software/v1
629+
configurations:
630+
- type: credentials.config.ocm.software
631+
consumers:
632+
- identity:
633+
type: OCIRegistry
634+
hostname: %[1]q
635+
port: %[2]q
636+
scheme: http
637+
credentials:
638+
- type: Credentials/v1
639+
properties:
640+
username: %[3]q
641+
password: %[4]q
642+
`, registry.Host, registry.Port, registry.User, registry.Password)
643+
644+
tempDir := t.TempDir()
645+
cfgPath := filepath.Join(tempDir, "ocmconfig.yaml")
646+
r.NoError(os.WriteFile(cfgPath, []byte(cfg), os.ModePerm))
647+
648+
componentName := "ocm.software/helm-access-add-cv"
649+
componentVersion := "v1.0.0"
650+
651+
constructor := fmt.Sprintf(`components:
652+
- name: %s
653+
version: %s
654+
provider:
655+
name: ocm.software
656+
resources:
657+
- name: mychart
658+
version: 0.1.0
659+
type: helmChart
660+
access:
661+
type: helm/v1
662+
helmRepository: %s
663+
helmChart: mychart-0.1.0.tgz
664+
`, componentName, componentVersion, srv.URL)
665+
666+
constructorPath := filepath.Join(tempDir, "constructor.yaml")
667+
r.NoError(os.WriteFile(constructorPath, []byte(constructor), os.ModePerm))
668+
669+
addCMD := cmd.New()
670+
addCMD.SetArgs([]string{
671+
"add",
672+
"component-version",
673+
"--repository", fmt.Sprintf("http://%s", registry.RegistryAddress),
674+
"--constructor", constructorPath,
675+
"--config", cfgPath,
676+
"--skip-reference-digest-processing",
677+
})
678+
679+
addCtx, cancel := context.WithTimeout(ctx, 30*time.Second)
680+
defer cancel()
681+
r.NoError(addCMD.ExecuteContext(addCtx), "add cv with helm access to OCI registry should succeed")
682+
683+
// Verify the component version was added by retrieving it
684+
client := internal.CreateAuthClient(registry.RegistryAddress, registry.User, registry.Password)
685+
resolver, err := urlresolver.New(
686+
urlresolver.WithBaseURL(registry.RegistryAddress),
687+
urlresolver.WithPlainHTTP(true),
688+
urlresolver.WithBaseClient(client),
689+
)
690+
r.NoError(err)
691+
692+
repo, err := oci.NewRepository(oci.WithResolver(resolver), oci.WithTempDir(t.TempDir()))
693+
r.NoError(err)
694+
695+
desc, err := repo.GetComponentVersion(ctx, componentName, componentVersion)
696+
r.NoError(err, "should be able to retrieve the added component version")
697+
r.Equal(componentName, desc.Component.Name)
698+
r.Equal(componentVersion, desc.Component.Version)
699+
r.Len(desc.Component.Resources, 1)
700+
r.Equal("mychart", desc.Component.Resources[0].Name)
701+
r.Equal("0.1.0", desc.Component.Resources[0].Version)
702+
r.Equal("helmChart", desc.Component.Resources[0].Type)
703+
r.Equal("helm/v1", desc.Component.Resources[0].Access.GetType().String())
704+
}

cli/integration/download_resource_integration_test.go

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"encoding/json"
66
"fmt"
77
"io"
8+
"net/http"
9+
"net/http/httptest"
810
"os"
911
"os/exec"
1012
"path/filepath"
@@ -22,6 +24,7 @@ import (
2224
"ocm.software/open-component-model/bindings/go/blob/compression"
2325
"ocm.software/open-component-model/bindings/go/blob/direct"
2426
"ocm.software/open-component-model/bindings/go/blob/filesystem"
27+
helmblob "ocm.software/open-component-model/bindings/go/helm/blob"
2528
descriptor "ocm.software/open-component-model/bindings/go/descriptor/runtime"
2629
v2 "ocm.software/open-component-model/bindings/go/descriptor/v2"
2730
"ocm.software/open-component-model/bindings/go/oci"
@@ -420,6 +423,114 @@ func Test_Integration_HelmTransformer(t *testing.T) {
420423
})
421424
}
422425

426+
// Test_Integration_DownloadResource_HelmAccess verifies that a resource with helm access
427+
// can be downloaded from a CTF. The download triggers the Helm ResourceRepository to
428+
// fetch the chart from the remote helm repository and return it as a blob.
429+
func Test_Integration_DownloadResource_HelmAccess(t *testing.T) {
430+
t.Parallel()
431+
r := require.New(t)
432+
ctx := t.Context()
433+
434+
root := getRepoRootBasedOnGit(t)
435+
chartDir := filepath.Join(root, "bindings/go/helm/testdata/provenance")
436+
437+
srv := httptest.NewServer(http.FileServer(http.Dir(chartDir)))
438+
t.Cleanup(srv.Close)
439+
440+
componentName := "ocm.software/helm-access-download"
441+
componentVersion := "v1.0.0"
442+
443+
constructor := fmt.Sprintf(`components:
444+
- name: %s
445+
version: %s
446+
provider:
447+
name: ocm.software
448+
resources:
449+
- name: mychart
450+
version: 0.1.0
451+
type: helmChart
452+
access:
453+
type: helm/v1
454+
helmRepository: %s
455+
helmChart: mychart-0.1.0.tgz
456+
`, componentName, componentVersion, srv.URL)
457+
458+
tempDir := t.TempDir()
459+
constructorPath := filepath.Join(tempDir, "constructor.yaml")
460+
r.NoError(os.WriteFile(constructorPath, []byte(constructor), os.ModePerm))
461+
462+
ctfDir := filepath.Join(tempDir, "ctf")
463+
464+
addCMD := cmd.New()
465+
addCMD.SetArgs([]string{
466+
"add",
467+
"component-version",
468+
"--repository", fmt.Sprintf("ctf::%s", ctfDir),
469+
"--constructor", constructorPath,
470+
"--skip-reference-digest-processing",
471+
})
472+
r.NoError(addCMD.ExecuteContext(ctx), "add component-version should succeed")
473+
474+
output := filepath.Join(t.TempDir(), "downloaded-chart")
475+
downloadCMD := cmd.New()
476+
downloadCMD.SetArgs([]string{
477+
"download",
478+
"resource",
479+
fmt.Sprintf("ctf::%s//%s:%s", ctfDir, componentName, componentVersion),
480+
"--identity", "name=mychart,version=0.1.0",
481+
"--output", output,
482+
"--extraction-policy", "disable",
483+
})
484+
r.NoError(downloadCMD.ExecuteContext(ctx), "download resource with helm access should succeed")
485+
486+
// The ResourceRepository returns a tar archive containing the chart .tgz and .prov files.
487+
chartPath := filepath.Join(chartDir, "mychart-0.1.0.tgz")
488+
provPath := filepath.Join(chartDir, "mychart-0.1.0.tgz.prov")
489+
assertHelmChartTar(t, output, chartPath, provPath)
490+
}
491+
492+
// assertHelmChartTar verifies that a tar file contains the expected chart and
493+
// optional provenance file by comparing their contents byte-for-byte against
494+
// the originals. This is useful for verifying raw downloads from the Helm
495+
// ResourceRepository, which returns a tar archive (not an OCI layout).
496+
func assertHelmChartTar(t *testing.T, tarPath, originalChartPath, originalProvPath string) {
497+
t.Helper()
498+
r := require.New(t)
499+
500+
expectedChart, err := os.ReadFile(originalChartPath)
501+
r.NoError(err, "should read original chart")
502+
503+
tarBlob, err := filesystem.GetBlobFromOSPath(tarPath)
504+
r.NoError(err, "should open downloaded tar")
505+
506+
chartBlob := helmblob.NewChartBlob(tarBlob)
507+
508+
chartArchive, err := chartBlob.ChartArchive()
509+
r.NoError(err, "tar should contain the chart .tgz")
510+
r.Equal(expectedChart, readAllFromBlob(t, chartArchive), "downloaded chart should match the original")
511+
512+
provFile, err := chartBlob.ProvFile()
513+
r.NoError(err, "reading prov file from chart blob should succeed")
514+
if originalProvPath != "" {
515+
r.NotNil(provFile, "tar should contain the .prov file")
516+
expectedProv, err := os.ReadFile(originalProvPath)
517+
r.NoError(err, "should read original prov file")
518+
r.Equal(expectedProv, readAllFromBlob(t, provFile), "downloaded prov file should match the original")
519+
}
520+
}
521+
522+
// readAllFromBlob reads the full content of a read-only blob, failing the test on error.
523+
func readAllFromBlob(t *testing.T, b blob.ReadOnlyBlob) []byte {
524+
t.Helper()
525+
r := require.New(t)
526+
rc, err := b.ReadCloser()
527+
r.NoError(err, "should open blob reader")
528+
defer func() { _ = rc.Close() }()
529+
data, err := io.ReadAll(rc)
530+
r.NoError(err, "should read blob content")
531+
return data
532+
}
533+
423534
func Test_Integration_ConstructorCompress(t *testing.T) {
424535
originalContent := "This is the original file content for compress test."
425536
name, version := "ocm.software/compress-test", "v1.0.0"

cli/integration/go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,13 +175,13 @@ require (
175175
ocm.software/open-component-model/bindings/go/cel v0.0.0-20260416102202-f251beded4be // indirect
176176
ocm.software/open-component-model/bindings/go/constructor v0.0.7 // indirect
177177
ocm.software/open-component-model/bindings/go/dag v0.0.6 // indirect
178-
ocm.software/open-component-model/bindings/go/helm v0.0.0-20260416102202-f251beded4be // indirect
178+
ocm.software/open-component-model/bindings/go/helm v0.0.0-20260416135310-843620e997c3 // indirect
179179
ocm.software/open-component-model/bindings/go/input/dir v0.0.2 // indirect
180180
ocm.software/open-component-model/bindings/go/input/file v0.0.3 // indirect
181181
ocm.software/open-component-model/bindings/go/input/utf8 v0.0.0-20260416102202-f251beded4be // indirect
182182
ocm.software/open-component-model/bindings/go/plugin v0.0.14 // indirect
183183
ocm.software/open-component-model/bindings/go/rsa v0.0.0-20260416102202-f251beded4be // indirect
184-
ocm.software/open-component-model/bindings/go/transfer v0.0.0-20260416102202-f251beded4be // indirect
184+
ocm.software/open-component-model/bindings/go/transfer v0.0.0-20260416135310-843620e997c3 // indirect
185185
ocm.software/open-component-model/bindings/go/transform v0.0.0-20260416102202-f251beded4be // indirect
186186
sigs.k8s.io/controller-runtime v0.23.3 // indirect
187187
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect

cli/integration/go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -468,8 +468,8 @@ ocm.software/open-component-model/bindings/go/descriptor/runtime v0.0.0-20260416
468468
ocm.software/open-component-model/bindings/go/descriptor/runtime v0.0.0-20260416102202-f251beded4be/go.mod h1:gB2z/xXiBqridb+jfkKgukfCP8y6+EhNylCNAK3iVWY=
469469
ocm.software/open-component-model/bindings/go/descriptor/v2 v2.0.3-alpha2 h1:loFXVXXXgCaBlpzs7gPizIopzyB3+SXIWHou8Xlp3Mc=
470470
ocm.software/open-component-model/bindings/go/descriptor/v2 v2.0.3-alpha2/go.mod h1:FTKrAPkR0865aUlDBrzmmHTdFxuy7AbqQZrgG6pB9YY=
471-
ocm.software/open-component-model/bindings/go/helm v0.0.0-20260416102202-f251beded4be h1:KMBlJvXiPAnxi2/BJGVqHUPMJo1eRiw3ofAqgizeEPU=
472-
ocm.software/open-component-model/bindings/go/helm v0.0.0-20260416102202-f251beded4be/go.mod h1:BKbb290bzvHwrf055/K4fYOg7hZDAfG67XyTGuRUJdw=
471+
ocm.software/open-component-model/bindings/go/helm v0.0.0-20260416135310-843620e997c3 h1:xsAlqdfhq+qHBDTTejhbvA1mxVi8UmUzAZqz9uAAZQc=
472+
ocm.software/open-component-model/bindings/go/helm v0.0.0-20260416135310-843620e997c3/go.mod h1:ASQNijdztYMrnAwFa/7krMEWYwoDRrAV6atOYFgU6E8=
473473
ocm.software/open-component-model/bindings/go/input/dir v0.0.2 h1:5n9k0J0W5jDWuzf2uhuzQKnNeqMwBDHop0mAfv4naiw=
474474
ocm.software/open-component-model/bindings/go/input/dir v0.0.2/go.mod h1:3qfxxgMZRSsp6aeiRirkaXSuIZ5oJF1ViUbVGTw1F6U=
475475
ocm.software/open-component-model/bindings/go/input/file v0.0.3 h1:fOs+mpqEIwCtR8qYGbUQrh4E9m8S47tH9GD6/dPPKO4=
@@ -488,8 +488,8 @@ ocm.software/open-component-model/bindings/go/runtime v0.0.7 h1:/4RDxVVubr6IC+ZK
488488
ocm.software/open-component-model/bindings/go/runtime v0.0.7/go.mod h1:hbas6Al4VECYKFk51SLIi8zdzhFgZ2WvFpPljatbJHo=
489489
ocm.software/open-component-model/bindings/go/signing v0.0.0-20260416102202-f251beded4be h1:XCyyRfCE60i7j/4UVRJoWqyQ71QsnmhLLYbz3bG9Qpk=
490490
ocm.software/open-component-model/bindings/go/signing v0.0.0-20260416102202-f251beded4be/go.mod h1:5hOzMcTYbRT+A9ffAPDSNDomqwVGxeik4SQKDIewoTQ=
491-
ocm.software/open-component-model/bindings/go/transfer v0.0.0-20260416102202-f251beded4be h1:2CgKpryQ6pxJ1BhLJIg/oIYue4fsn5hh9zlJ4lrwXbA=
492-
ocm.software/open-component-model/bindings/go/transfer v0.0.0-20260416102202-f251beded4be/go.mod h1:bRxlcBg5mYi+6T29OcdXgYKEj55O/REbOAeJhYVLgOQ=
491+
ocm.software/open-component-model/bindings/go/transfer v0.0.0-20260416135310-843620e997c3 h1:fT70yEavgnajvTx7nh57m3Bl87rQfsLWLYPq0/tbZ+w=
492+
ocm.software/open-component-model/bindings/go/transfer v0.0.0-20260416135310-843620e997c3/go.mod h1:oiUONPR0duQNO8fW3659rXwKvtpyPEZTHiDsEprTWqA=
493493
ocm.software/open-component-model/bindings/go/transform v0.0.0-20260416102202-f251beded4be h1:bTcweHJx50oysa93Yo/mLNFSlEbRmjFk6BocBbuA04k=
494494
ocm.software/open-component-model/bindings/go/transform v0.0.0-20260416102202-f251beded4be/go.mod h1:QOu13NEBqdp4oozQupCH1dwTncn/uH64+2uU5g3HLng=
495495
oras.land/oras-go/v2 v2.6.0 h1:X4ELRsiGkrbeox69+9tzTu492FMUu7zJQW6eJU+I2oc=

cli/internal/plugin/builtin/builtin.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66

77
filesystemv1alpha1 "ocm.software/open-component-model/bindings/go/configuration/filesystem/v1alpha1/spec"
88
helmdigest "ocm.software/open-component-model/bindings/go/helm/digest"
9+
helmresource "ocm.software/open-component-model/bindings/go/helm/repository/resource"
910
"ocm.software/open-component-model/bindings/go/plugin/manager"
1011
ocicredentialplugin "ocm.software/open-component-model/cli/internal/plugin/builtin/credentials/oci"
1112
"ocm.software/open-component-model/cli/internal/plugin/builtin/input/dir"
@@ -50,6 +51,11 @@ func Register(manager *manager.PluginManager, filesystemConfig *filesystemv1alph
5051
); err != nil {
5152
return fmt.Errorf("could not register helm digest processor plugin: %w", err)
5253
}
54+
if err := manager.ResourcePluginRegistry.RegisterInternalResourcePlugin(
55+
helmresource.NewResourceRepository(filesystemConfig),
56+
); err != nil {
57+
return fmt.Errorf("could not register helm resource repository plugin: %w", err)
58+
}
5359
if err := rsa.Register(manager.SigningRegistry, filesystemConfig); err != nil {
5460
return fmt.Errorf("could not register RSA signing plugin: %w", err)
5561
}

cli/internal/plugin/builtin/input/helm/method_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"testing"
55

66
filesystemv1alpha1 "ocm.software/open-component-model/bindings/go/configuration/filesystem/v1alpha1/spec"
7-
helmv1 "ocm.software/open-component-model/bindings/go/helm/input/spec/v1"
7+
helmv1 "ocm.software/open-component-model/bindings/go/helm/spec/input/v1"
88
"ocm.software/open-component-model/bindings/go/plugin/manager/registries/input"
99
"ocm.software/open-component-model/bindings/go/runtime"
1010

0 commit comments

Comments
 (0)