Merge "Use provider.URL() instead of root"

This commit is contained in:
Zuul 2020-06-08 21:47:18 +00:00 committed by Gerrit Code Review
commit 1b81d85279
4 changed files with 8 additions and 20 deletions

View File

@ -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,
}

View File

@ -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))

View File

@ -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
}

View File

@ -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,
}