Skip to content

Commit cd74bcd

Browse files
committed
Move LoadMetadata to separate package
Moves LoadMetadata to a separate package to allow implementers of the infrastructure provider interface to utilize the function. The cluster asset/package does not use LoadMetadata but does depend on the implementers of the interface. Moving to a separate package breaks the dependency loop.
1 parent 3730374 commit cd74bcd

File tree

5 files changed

+39
-29
lines changed

5 files changed

+39
-29
lines changed

pkg/asset/cluster/metadata.go

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ package cluster
22

33
import (
44
"encoding/json"
5-
"os"
6-
"path/filepath"
75

86
"github.com/pkg/errors"
97

@@ -15,6 +13,7 @@ import (
1513
"github.com/openshift/installer/pkg/asset/cluster/gcp"
1614
"github.com/openshift/installer/pkg/asset/cluster/ibmcloud"
1715
"github.com/openshift/installer/pkg/asset/cluster/libvirt"
16+
clustermetadata "github.com/openshift/installer/pkg/asset/cluster/metadata"
1817
"github.com/openshift/installer/pkg/asset/cluster/nutanix"
1918
"github.com/openshift/installer/pkg/asset/cluster/openstack"
2019
"github.com/openshift/installer/pkg/asset/cluster/ovirt"
@@ -39,10 +38,6 @@ import (
3938
vspheretypes "github.com/openshift/installer/pkg/types/vsphere"
4039
)
4140

42-
const (
43-
metadataFileName = "metadata.json"
44-
)
45-
4641
// Metadata contains information needed to destroy clusters.
4742
type Metadata struct {
4843
File *asset.File
@@ -119,7 +114,7 @@ func (m *Metadata) Generate(parents asset.Parents) (err error) {
119114
}
120115

121116
m.File = &asset.File{
122-
Filename: metadataFileName,
117+
Filename: clustermetadata.FileName,
123118
Data: data,
124119
}
125120

@@ -139,19 +134,3 @@ func (m *Metadata) Files() []*asset.File {
139134
func (m *Metadata) Load(f asset.FileFetcher) (found bool, err error) {
140135
return false, nil
141136
}
142-
143-
// LoadMetadata loads the cluster metadata from an asset directory.
144-
func LoadMetadata(dir string) (*types.ClusterMetadata, error) {
145-
path := filepath.Join(dir, metadataFileName)
146-
raw, err := os.ReadFile(path)
147-
if err != nil {
148-
return nil, err
149-
}
150-
151-
var metadata *types.ClusterMetadata
152-
if err = json.Unmarshal(raw, &metadata); err != nil {
153-
return nil, errors.Wrapf(err, "failed to Unmarshal data from %q to types.ClusterMetadata", path)
154-
}
155-
156-
return metadata, err
157-
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package metadata
2+
3+
import (
4+
"encoding/json"
5+
"fmt"
6+
"os"
7+
"path/filepath"
8+
9+
"github.com/openshift/installer/pkg/types"
10+
)
11+
12+
const (
13+
// FileName is the filename for the cluster metadata.json file.
14+
FileName = "metadata.json"
15+
)
16+
17+
// Load loads the cluster metadata from an asset directory.
18+
func Load(dir string) (*types.ClusterMetadata, error) {
19+
path := filepath.Join(dir, FileName)
20+
raw, err := os.ReadFile(path)
21+
if err != nil {
22+
return nil, err
23+
}
24+
25+
var metadata *types.ClusterMetadata
26+
if err = json.Unmarshal(raw, &metadata); err != nil {
27+
return nil, fmt.Errorf("failed to Unmarshal data from %q to types.ClusterMetadata: %w", path, err)
28+
}
29+
30+
return metadata, err
31+
}

pkg/destroy/bootstrap/bootstrap.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
"sigs.k8s.io/controller-runtime/pkg/client"
1515

1616
configv1 "github.com/openshift/api/config/v1"
17-
"github.com/openshift/installer/pkg/asset/cluster"
17+
"github.com/openshift/installer/pkg/asset/cluster/metadata"
1818
openstackasset "github.com/openshift/installer/pkg/asset/cluster/openstack"
1919
"github.com/openshift/installer/pkg/asset/manifests/capiutils"
2020
"github.com/openshift/installer/pkg/clusterapi"
@@ -30,7 +30,7 @@ import (
3030

3131
// Destroy uses Terraform to remove bootstrap resources.
3232
func Destroy(ctx context.Context, dir string) (err error) {
33-
metadata, err := cluster.LoadMetadata(dir)
33+
metadata, err := metadata.Load(dir)
3434
if err != nil {
3535
return err
3636
}

pkg/destroy/destroyer.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ import (
44
"github.com/pkg/errors"
55
"github.com/sirupsen/logrus"
66

7-
"github.com/openshift/installer/pkg/asset/cluster"
7+
"github.com/openshift/installer/pkg/asset/cluster/metadata"
88
"github.com/openshift/installer/pkg/destroy/providers"
99
)
1010

1111
// New returns a Destroyer based on `metadata.json` in `rootDir`.
1212
func New(logger logrus.FieldLogger, rootDir string) (providers.Destroyer, error) {
13-
metadata, err := cluster.LoadMetadata(rootDir)
13+
metadata, err := metadata.Load(rootDir)
1414
if err != nil {
1515
return nil, err
1616
}

pkg/gather/gather.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ import (
1111
"github.com/pkg/errors"
1212
"github.com/sirupsen/logrus"
1313

14-
"github.com/openshift/installer/pkg/asset/cluster"
14+
"github.com/openshift/installer/pkg/asset/cluster/metadata"
1515
"github.com/openshift/installer/pkg/gather/providers"
1616
)
1717

1818
// New returns a Gather based on `metadata.json` in `rootDir`.
1919
func New(logger logrus.FieldLogger, serialLogBundle string, bootstrap string, masters []string, rootDir string) (providers.Gather, error) {
20-
metadata, err := cluster.LoadMetadata(rootDir)
20+
metadata, err := metadata.Load(rootDir)
2121
if err != nil {
2222
return nil, err
2323
}

0 commit comments

Comments
 (0)