diff --git a/pkg/clusterctl/client/client.go b/pkg/clusterctl/client/client.go index 4ea7929bb..ec10ff46d 100644 --- a/pkg/clusterctl/client/client.go +++ b/pkg/clusterctl/client/client.go @@ -24,11 +24,6 @@ import ( "opendev.org/airship/airshipctl/pkg/log" ) -const ( - // path to file on in memory file system - dummyComponentPath = "/dummy/path/v0.3.2/components.yaml" -) - var _ Interface = &Client{} // Interface is abstraction to Clusterctl @@ -79,14 +74,14 @@ func (c *Client) Init(kubeconfigPath, kubeconfigContext string) error { } // newConfig returns clusterctl config client -func newConfig(options *airshipv1.Clusterctl) (clusterctlconfig.Client, error) { +func newConfig(options *airshipv1.Clusterctl, root string) (clusterctlconfig.Client, error) { for _, provider := range options.Providers { // this is a workaround as cluserctl validates if URL is empty, even though it is not // used anywhere outside repository factory which we override // TODO (kkalynovskyi) we need to create issue for this in clusterctl, and remove URL // validation and move it to be an error during repository interface initialization if !provider.IsClusterctlRepository { - provider.URL = dummyComponentPath + provider.URL = root } } reader, err := implementations.NewAirshipReader(options) @@ -97,12 +92,11 @@ func newConfig(options *airshipv1.Clusterctl) (clusterctlconfig.Client, error) { } func newClusterctlClient(root string, options *airshipv1.Clusterctl) (clusterctlclient.Client, error) { - cconf, err := newConfig(options) + cconf, err := newConfig(options, root) if err != nil { return nil, err } rf := RepositoryFactory{ - root: root, Options: options, ConfigClient: cconf, } diff --git a/pkg/clusterctl/client/client_test.go b/pkg/clusterctl/client/client_test.go index 178e7893f..7f61a88a4 100644 --- a/pkg/clusterctl/client/client_test.go +++ b/pkg/clusterctl/client/client_test.go @@ -78,7 +78,7 @@ func TestNewConfig(t *testing.T) { name: "multiple repos with airship", presentProvider: "airship-repo", presentType: "InfrastructureProvider", - expectedURL: dummyComponentPath, + expectedURL: testDataDir, conf: &airshipv1.Clusterctl{ Providers: []*airshipv1.Provider{ @@ -107,7 +107,7 @@ func TestNewConfig(t *testing.T) { provName := tt.presentProvider provType := tt.presentType t.Run(tt.name, func(t *testing.T) { - got, err := newConfig(conf) + got, err := newConfig(conf, testDataDir) require.NoError(t, err) providerClient := got.Providers() provider, err := providerClient.Get(provName, clusterctlv1.ProviderType(provType)) diff --git a/pkg/clusterctl/client/factory.go b/pkg/clusterctl/client/factory.go index 093aee54b..63dded2a2 100644 --- a/pkg/clusterctl/client/factory.go +++ b/pkg/clusterctl/client/factory.go @@ -27,7 +27,6 @@ import ( // RepositoryFactory returns an injection factory to work with clusterctl client type RepositoryFactory struct { - root string Options *airshipv1.Clusterctl ConfigClient config.Client } @@ -72,7 +71,7 @@ func (f RepositoryFactory) repoFactory(provider config.Provider) (repository.Cli return nil, ErrProviderRepoNotFound{ProviderName: name, ProviderType: string(repoType)} } // construct a repository for this provider using root and version map - repo, err := implementations.NewRepository(f.root, versions) + repo, err := implementations.NewRepository(provider.URL(), versions) if err != nil { return nil, err } diff --git a/pkg/clusterctl/client/factory_test.go b/pkg/clusterctl/client/factory_test.go index b4792280b..0f4dfe7b2 100644 --- a/pkg/clusterctl/client/factory_test.go +++ b/pkg/clusterctl/client/factory_test.go @@ -68,7 +68,7 @@ func testOptions(t *testing.T, input string) *airshipv1.Clusterctl { func testNewConfig(t *testing.T, o *airshipv1.Clusterctl) clusterctlconfig.Client { t.Helper() - configClient, err := newConfig(o) + configClient, err := newConfig(o, testDataDir) require.NoError(t, err) require.NotNil(t, configClient) return configClient @@ -80,7 +80,6 @@ func TestFactory(t *testing.T) { o := testOptions(t, testConfigFactory) configClient := testNewConfig(t, o) factory := RepositoryFactory{ - root: testDataDir, Options: o, ConfigClient: configClient, } @@ -134,7 +133,7 @@ func TestFactory(t *testing.T) { require.NoError(t, err) sort.Strings(expectedVersions) sort.Strings(versions) - assert.Equal(t, dummyComponentPath, repo.URL()) + assert.Equal(t, testDataDir, repo.URL()) assert.Equal(t, expectedVersions, versions) components := repo.Components() require.NotNil(t, components) @@ -163,7 +162,6 @@ func TestClientRepositoryFactory(t *testing.T) { o := testOptions(t, testConfigFactory) configClient := testNewConfig(t, o) factory := RepositoryFactory{ - root: testDataDir, Options: o, ConfigClient: configClient, } @@ -180,7 +178,6 @@ func TestRepoFactoryFunction(t *testing.T) { configClient := testNewConfig(t, o) factory := RepositoryFactory{ - root: testDataDir, Options: o, ConfigClient: configClient, } @@ -203,7 +200,6 @@ func TestClusterctlRepoFactoryFunction(t *testing.T) { o := testOptions(t, testConfigFactory) configClient := testNewConfig(t, o) factory := RepositoryFactory{ - root: testDataDir, Options: o, ConfigClient: configClient, } @@ -231,7 +227,6 @@ func TestRepositoryFactoryErrors(t *testing.T) { configClient := testNewConfig(t, o) require.NotNil(t, configClient) factory := RepositoryFactory{ - root: testDataDir, Options: o, ConfigClient: configClient, }