Skip to content

Commit 58d7cde

Browse files
committed
[registry-facade] Support IPFS_HOST env var
1 parent a621eb8 commit 58d7cde

File tree

3 files changed

+22
-4
lines changed

3 files changed

+22
-4
lines changed

components/registry-facade/pkg/registry/blob.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,8 @@ func (bh *blobHandler) getBlob(w http.ResponseWriter, r *http.Request) {
153153
// to be in the blobstore when in reality it isn't.
154154
_, _, rc, err := src.GetBlob(context.Background(), bh.Spec, bh.Digest)
155155
if err != nil {
156-
log.WithError(err).WithField("digest", bh.Digest).Warn("cannot push to IPFS")
156+
log.WithError(err).WithField("digest", bh.Digest).Warn("cannot push to IPFS - unable to get blob")
157+
return
157158
}
158159
if rc == nil {
159160
log.WithField("digest", bh.Digest).Warn("cannot push to IPFS - blob is nil")

components/registry-facade/pkg/registry/ipfs.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ type IPFSStore struct {
4242
}
4343

4444
func (store *IPFSStore) Get(ctx context.Context, dgst digest.Digest) (ipfsURL string, err error) {
45+
if store == nil || store.IPFS == nil || store.Redis == nil {
46+
return "", nil
47+
}
48+
4549
res, err := store.Redis.Get(ctx, dgst.String()).Result()
4650
if err != nil {
4751
return "", err
@@ -51,6 +55,10 @@ func (store *IPFSStore) Get(ctx context.Context, dgst digest.Digest) (ipfsURL st
5155
}
5256

5357
func (store *IPFSStore) Has(ctx context.Context, dgst digest.Digest) (ok bool, err error) {
58+
if store == nil || store.IPFS == nil || store.Redis == nil {
59+
return false, nil
60+
}
61+
5462
res := store.Redis.Exists(ctx, dgst.String())
5563
if err := res.Err(); err != nil {
5664
return false, err
@@ -60,12 +68,16 @@ func (store *IPFSStore) Has(ctx context.Context, dgst digest.Digest) (ok bool, e
6068
}
6169

6270
func (store *IPFSStore) Store(ctx context.Context, dgst digest.Digest, content io.Reader) (err error) {
71+
if store == nil || store.IPFS == nil || store.Redis == nil {
72+
return nil
73+
}
74+
6375
p, err := store.IPFS.Unixfs().Add(ctx, files.NewReaderFile(content), options.Unixfs.Pin(true), options.Unixfs.CidVersion(1))
6476
if err != nil {
6577
return err
6678
}
6779

68-
res := store.Redis.Set(ctx, dgst.String(), p.Cid().String(), 36*time.Hour)
80+
res := store.Redis.Set(ctx, dgst.String(), p.Cid().String(), 0)
6981
if err := res.Err(); err != nil {
7082
return err
7183
}

components/registry-facade/pkg/registry/registry.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,11 +192,16 @@ func NewRegistry(cfg config.Config, newResolver ResolverProvider, reg prometheus
192192

193193
var ipfs *IPFSStore
194194
if cfg.IPFSCache != nil && cfg.IPFSCache.Enabled {
195-
addr, err := ma.NewMultiaddr(strings.TrimSpace(string(cfg.IPFSCache.IPFSAddr)))
195+
addr := cfg.IPFSCache.IPFSAddr
196+
if ipfsHost := os.Getenv("IPFS_HOST"); ipfsHost != "" {
197+
addr = strings.ReplaceAll(addr, "$IPFS_HOST", ipfsHost)
198+
}
199+
200+
maddr, err := ma.NewMultiaddr(strings.TrimSpace(addr))
196201
if err != nil {
197202
return nil, xerrors.Errorf("cannot connect to IPFS: %w", err)
198203
}
199-
core, err := httpapi.NewApi(addr)
204+
core, err := httpapi.NewApi(maddr)
200205
if err != nil {
201206
return nil, xerrors.Errorf("cannot connect to IPFS: %w", err)
202207
}

0 commit comments

Comments
 (0)