-
Notifications
You must be signed in to change notification settings - Fork 19
/
example.go
85 lines (69 loc) · 2.33 KB
/
example.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package main
import (
"fmt"
"github.com/mandelsoft/goutils/errors"
"github.com/mandelsoft/goutils/finalizer"
"github.com/mandelsoft/vfs/pkg/memoryfs"
"github.com/open-component-model/ocm/pkg/blobaccess"
"github.com/open-component-model/ocm/pkg/common/accessio"
"github.com/open-component-model/ocm/pkg/common/accessobj"
"github.com/open-component-model/ocm/pkg/contexts/ocm"
"github.com/open-component-model/ocm/pkg/contexts/ocm/compdesc"
metav1 "github.com/open-component-model/ocm/pkg/contexts/ocm/compdesc/meta/v1"
"github.com/open-component-model/ocm/pkg/contexts/ocm/repositories/ctf"
"github.com/open-component-model/ocm/pkg/contexts/ocm/resourcetypes"
"github.com/open-component-model/ocm/pkg/mime"
)
const COMP = "acme.org/mytestcomponent"
const VERS = "1.0.0"
func CTFExample() (rerr error) {
var finalize finalizer.Finalizer
// ocmlog.Context().AddRule(logging.NewConditionRule(logging.TraceLevel, accessio.ALLOC_REALM))
defer finalize.FinalizeWithErrorPropagation(&rerr)
octx := ocm.DefaultContext()
memfs := memoryfs.New()
repo, err := ctf.Open(octx, accessobj.ACC_CREATE, "test", 0o700, accessio.PathFileSystem(memfs))
if err != nil {
return err
}
finalize.Close(repo)
for i := 1; i <= 1; i++ {
loop := finalize.Nested()
cname := fmt.Sprintf("%s%d", COMP, i)
comp, err := repo.LookupComponent(cname)
if err != nil {
return errors.Wrapf(err, "cannot lookup component %s", cname)
}
loop.Close(comp)
compvers, err := comp.NewVersion(VERS, false)
if err != nil {
return errors.Wrapf(err, "cannot create new version %s", VERS)
}
loop.Close(compvers)
// add provider information
compvers.GetDescriptor().Provider = metav1.Provider{Name: "acme.org"}
// add a new resource artifact with the local identity `name="test"`.
err = compvers.SetResourceBlob(
&compdesc.ResourceMeta{
ElementMeta: compdesc.ElementMeta{
Name: "test",
},
Type: resourcetypes.BLOB,
Relation: metav1.LocalRelation,
},
blobaccess.ForString(mime.MIME_TEXT, "testdata"),
"", nil,
)
if err != nil {
return errors.Wrapf(err, "cannot add resource")
}
if err = comp.AddVersion(compvers); err != nil {
return errors.Wrapf(err, "cannot add new version")
}
fmt.Printf("added component %s version %s\n", cname, VERS)
if err := loop.Finalize(); err != nil {
return err
}
}
return nil
}