Issue-ID: NONRTRIC-814
Signed-off-by: elinuxhenrik <henrik.b.andersson@est.tech>
Change-Id: Id9e435492a03f4ce10b261fde2f50723bc664b1f
"path/filepath"
"strings"
"path/filepath"
"strings"
- "github.com/pkg/errors"
log "github.com/sirupsen/logrus"
"gopkg.in/yaml.v2"
"helm.sh/helm/v3/pkg/action"
log "github.com/sirupsen/logrus"
"gopkg.in/yaml.v2"
"helm.sh/helm/v3/pkg/action"
return nil
}
log.Debugf("Adding %s to Helm Repo\n", url)
return nil
}
log.Debugf("Adding %s to Helm Repo\n", url)
- repoFile := filepath.Join(filepath.Dir(hm.settings.RepositoryConfig), "index.yaml")
- log.Debug("Repo file: ", repoFile)
-
- c := repo.Entry{
- Name: filepath.Dir(repoFile),
- URL: url,
- }
-
- var err error
- r := hm.repo
- if r == nil {
- r, err = repo.NewChartRepository(&c, getter.All(hm.settings))
- if err != nil {
- return err
- }
- }
+ repoFile := hm.settings.RepositoryConfig
//Ensure the file directory exists as it is required for file locking
//Ensure the file directory exists as it is required for file locking
- err = os.MkdirAll(filepath.Dir(repoFile), os.ModePerm)
- if err != nil && !errors.Is(err, os.ErrNotExist) {
- log.Error("Unable to create folder for Helm.")
+ err := os.MkdirAll(filepath.Dir(repoFile), os.ModePerm)
+ if err != nil && !os.IsExist(err) {
return err
}
b, err := os.ReadFile(repoFile)
return err
}
b, err := os.ReadFile(repoFile)
- if err != nil {
- log.Info("Creating repo file: ", repoFile)
- err = r.Index()
- if err != nil {
- log.Error("Unable to create repo file: ", repoFile)
- return err
- }
- b, err = os.ReadFile(repoFile)
- if err != nil {
- log.Error("Unable to read repo file: ", repoFile)
- return err
- }
+ if err != nil && !os.IsNotExist(err) {
+ return err
if f.Has(repoName) {
log.Debugf("repository name (%s) already exists\n", repoName)
if f.Has(repoName) {
log.Debugf("repository name (%s) already exists\n", repoName)
- if _, err := r.DownloadIndexFile(); err != nil {
- err = errors.Wrapf(err, "looks like %q is not a valid chart repository or cannot be reached", url)
+ c := repo.Entry{
+ Name: repoName,
+ URL: url,
+ }
+
+ r := hm.repo
+ if r == nil {
+ r, err = repo.NewChartRepository(&c, getter.All(hm.settings))
+ if err != nil {
+ return err
+ }
+ }
+
+ if _, err = r.DownloadIndexFile(); err != nil {
+ log.Errorf("looks like %q is not a valid chart repository or cannot be reached", url)
return err
}
f.Update(&c)
return err
}
f.Update(&c)
- if err := f.WriteFile(repoFile, 0644); err != nil {
+ if err = f.WriteFile(repoFile, 0644); err != nil {
log.Debugf("%q has been added to your repositories\n", repoName)
log.Debugf("%q has been added to your repositories\n", repoName)
cp, err := install.ChartPathOptions.LocateChart(fmt.Sprintf("%s/%s", repoName, chartName), hm.settings)
if err != nil {
cp, err := install.ChartPathOptions.LocateChart(fmt.Sprintf("%s/%s", repoName, chartName), hm.settings)
if err != nil {
- log.Error("Unable to locate chart!")
+ log.Errorf("Unable to locate chart: %s", chartName)
return err
}
chartRequested, err := loader.Load(cp)
if err != nil {
return err
}
chartRequested, err := loader.Load(cp)
if err != nil {
- log.Error("Unable to load chart path!")
+ log.Errorf("Unable to load chart path for chart: %s", chartName)
install.ReleaseName = releaseName
_, err = install.Run(chartRequested, nil)
if err != nil {
install.ReleaseName = releaseName
_, err = install.Run(chartRequested, nil)
if err != nil {
- log.Error("Unable to run chart!")
+ log.Errorf("Unable to run chart: %s", chartName)
return err
}
log.Debug("Successfully onboarded ", namespace, repoName, chartName, releaseName)
return err
}
log.Debug("Successfully onboarded ", namespace, repoName, chartName, releaseName)
"oransc.org/nonrtric/capifcore/internal/helmmanagement/mocks"
)
"oransc.org/nonrtric/capifcore/internal/helmmanagement/mocks"
)
-func TestNoChartURL_reoNotSetUp(t *testing.T) {
+func TestNoChartURL_repoNotSetUp(t *testing.T) {
managerUnderTest := NewHelmManager(nil)
res := managerUnderTest.SetUpRepo("repoName", "")
managerUnderTest := NewHelmManager(nil)
res := managerUnderTest.SetUpRepo("repoName", "")
assert.False(t, managerUnderTest.setUp)
}
assert.False(t, managerUnderTest.setUp)
}
-// func TestSetUpRepo_repoShouldBeAddedToReposFile(t *testing.T) {
-// settings := createReposFile(t)
+func TestSetUpRepoExistingRepoFile_repoShouldBeAddedToReposFile(t *testing.T) {
+ settings := createReposFile(t)
-// managerUnderTest := NewHelmManager(settings)
+ managerUnderTest := NewHelmManager(settings)
-// repoName := "repoName"
-// repoURL := "http://url"
-// managerUnderTest.repo = getChartRepo(settings)
+ repoName := filepath.Dir(settings.RepositoryConfig)
+ repoURL := "http://url"
+ managerUnderTest.repo = getChartRepo(settings)
-// res := managerUnderTest.SetUpRepo(repoName, repoURL)
+ res := managerUnderTest.SetUpRepo(repoName, repoURL)
-// assert.Nil(t, res)
-// assert.True(t, containsRepo(settings.RepositoryConfig, repoName))
-// assert.True(t, managerUnderTest.setUp)
-// }
+ assert.Nil(t, res)
+ assert.True(t, containsRepo(settings.RepositoryConfig, repoName))
+ assert.True(t, managerUnderTest.setUp)
+}
func TestSetUpRepoFail_shouldNotBeSetUp(t *testing.T) {
settings := createReposFile(t)
func TestSetUpRepoFail_shouldNotBeSetUp(t *testing.T) {
settings := createReposFile(t)
os.RemoveAll(reposDir)
})
os.RemoveAll(reposDir)
})
- reposFile := reposDir + "/repositories.yaml"
+ reposFile := reposDir + "/index.yaml"
settings := &cli.EnvSettings{
RepositoryConfig: reposFile,
}
settings := &cli.EnvSettings{
RepositoryConfig: reposFile,
}
func getChartRepo(settings *cli.EnvSettings) *repo.ChartRepository {
repoURL := "http://repoURL"
c := repo.Entry{
func getChartRepo(settings *cli.EnvSettings) *repo.ChartRepository {
repoURL := "http://repoURL"
c := repo.Entry{
+ Name: filepath.Dir(settings.RepositoryConfig),
URL: repoURL,
}
r, _ := repo.NewChartRepository(&c, getter.All(settings))
URL: repoURL,
}
r, _ := repo.NewChartRepository(&c, getter.All(settings))