Skip to content

Commit

Permalink
Merge pull request openshift#6753 from pedjak/bz-1880246
Browse files Browse the repository at this point in the history
Bug 1880246:Entry keys in aggregated Helm index are appended with the name of source Helm repo
  • Loading branch information
openshift-merge-robot authored Sep 29, 2020
2 parents 2a55b25 + d690950 commit 87d88d0
Show file tree
Hide file tree
Showing 8 changed files with 619 additions and 36 deletions.
25 changes: 25 additions & 0 deletions docs/helm/endpoints_api.md
Original file line number Diff line number Diff line change
Expand Up @@ -321,3 +321,28 @@ _Returns all chart details for the given chart URL_

* **Code:** 400 BAD REQUEST <br />
**Content:** `{ error : "error message" }`

**Retrieve Helm Repository Index**
----

_Returns repository index file containing all entries from all configured repositories_

* **URL**

`/api/helm/charts/index.yaml`

* **Method:**

`GET`

* **Success Response:**

* **Code:** 200 <br />
* JSON representation of [Index file](https://github.com/helm/helm/blob/master/pkg/repo/index.go#L79)
* Each entry key is appended with [source repo name](https://github.com/openshift/api/blob/master/helm/v1beta1/types_helm.go#L16).
Double dash (`--`) serves as the separate between the chart and repo name (e.g. `foo-chart--my-repo`)

* **Error Response:**

* **Code:** 400 BAD REQUEST <br />
**Content:** `{ error : "error message" }`
8 changes: 5 additions & 3 deletions pkg/helm/chartproxy/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,14 +69,16 @@ func (p *proxy) IndexFile() (*repo.IndexFile, error) {
return nil, err
}

var indexFiles []*repo.IndexFile
indexFile := repo.NewIndexFile()
for _, helmRepo := range helmRepos {
idxFile, err := helmRepo.IndexFile()
if err != nil {
plog.Errorf("Error retrieving index file for %v: %v", helmRepo, err)
continue
}
indexFiles = append(indexFiles, idxFile)
for key, entry := range idxFile.Entries {
indexFile.Entries[key+"--"+helmRepo.Name] = entry
}
}
return mergeIndexFiles(indexFiles...), nil
return indexFile, nil
}
11 changes: 8 additions & 3 deletions pkg/helm/chartproxy/proxy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,19 @@ func TestProxy_IndexFile(t *testing.T) {
}{
{
name: "returned index file for configured helm repo",
indexFiles: []string{"testdata/azureRepoIndex.yaml"},
mergedFile: "testdata/azureRepoIndex.yaml",
indexFiles: []string{"testdata/sampleRepoIndex.yaml"},
mergedFile: "testdata/mergedSampleRepoIndex2.yaml",
},
{
name: "returned merged index file for configured helm repos",
indexFiles: []string{"testdata/azureRepoIndex.yaml", "testdata/sampleRepoIndex.yaml"},
mergedFile: "testdata/mergedRepoIndex.yaml",
},
{
name: "returned merged index contains all entries from source repos - helm names are appended with repo names to avoid duplicate removal",
indexFiles: []string{"testdata/sampleRepoIndex2.yaml", "testdata/sampleRepoIndex2.yaml"},
mergedFile: "testdata/mergedRepoIndexWithDuplicates.yaml",
},
{
name: "return empty index file when no repositories declared in cluster",
indexFiles: []string{},
Expand Down Expand Up @@ -97,7 +102,7 @@ func TestProxy_IndexFile(t *testing.T) {
if err != nil {
t.Error(err)
}
if reflect.DeepEqual(indexFile, expectedIndexFile) {
if !reflect.DeepEqual(indexFile.Entries, expectedIndexFile.Entries) {
t.Errorf("Expected index content \n%v but got \n%v", expectedIndexFile, indexFile)
}
} else {
Expand Down
10 changes: 0 additions & 10 deletions pkg/helm/chartproxy/repos.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,16 +180,6 @@ func (b helmRepoGetter) unmarshallConfig(repo unstructured.Unstructured) (*helmR
return h, nil
}

func mergeIndexFiles(files ...*repo.IndexFile) *repo.IndexFile {
indexFile := repo.NewIndexFile()
for _, file := range files {
for key, entry := range file.Entries {
indexFile.Entries[key] = entry
}
}
return indexFile
}

func (b *helmRepoGetter) List() ([]*helmRepo, error) {
var helmRepos []*helmRepo
repos, err := b.Client.Resource(helmChartRepositoryGVK).List(context.TODO(), v1.ListOptions{})
Expand Down
40 changes: 20 additions & 20 deletions pkg/helm/chartproxy/testdata/mergedRepoIndex.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
apiVersion: v1
entries:
aks-helloworld:
aks-helloworld--sample-repo-1:
- apiVersion: v1
created: "2020-03-30T16:27:13.4350608-05:00"
description: A Helm chart for Kubernetes
Expand All @@ -17,7 +17,7 @@ entries:
response:
- https://azure-samples.github.io/helm-charts/aks-helloworld-0.1.0.tgz
version: 0.1.0
azure-vote:
azure-vote--sample-repo-1:
- apiVersion: v1
created: "2020-03-30T16:27:13.4454224-05:00"
description: A Helm chart for Kubernetes
Expand All @@ -34,7 +34,7 @@ entries:
response:
- https://azure-samples.github.io/helm-charts/azure-vote-0.1.0.tgz
version: 0.1.0
azure-vote-osba:
azure-vote-osba--sample-repo-1:
- apiVersion: v1
created: "2020-03-30T16:27:13.4518442-05:00"
description: A Helm chart for Kubernetes
Expand All @@ -43,7 +43,7 @@ entries:
response:
- https://azure-samples.github.io/helm-charts/azure-vote-osba-0.1.0.tgz
version: 0.1.0
burst-scheduler:
burst-scheduler--sample-repo-1:
- apiVersion: v1
created: "2020-03-30T16:27:13.455658-05:00"
description: A Helm chart for Kubernetes
Expand All @@ -52,7 +52,7 @@ entries:
response:
- https://azure-samples.github.io/helm-charts/burst-scheduler-0.1.0.tgz
version: 0.1.0
image-pull-secret:
image-pull-secret--sample-repo-1:
- apiVersion: v1
created: "2020-03-30T16:27:13.4592817-05:00"
description: A Helm chart for Kubernetes
Expand All @@ -61,7 +61,7 @@ entries:
response:
- https://azure-samples.github.io/helm-charts/image-pull-secret-0.1.0.tgz
version: 0.1.0
open-service-broker-azure:
open-service-broker-azure--sample-repo-1:
- apiVersion: v1
appVersion: v0.0.1
created: "2020-03-30T16:27:13.4706997-05:00"
Expand Down Expand Up @@ -89,7 +89,7 @@ entries:
response:
- https://azure-samples.github.io/helm-charts/open-service-broker-azure-v0.0.1.tgz
version: v0.0.1
osba-container-instances-demo:
osba-container-instances-demo--sample-repo-1:
- apiVersion: v1
created: "2020-03-30T16:27:13.4798738-05:00"
description: A Helm chart for Kubernetes
Expand All @@ -98,7 +98,7 @@ entries:
response:
- https://azure-samples.github.io/helm-charts/osba-container-instances-demo-0.1.0.tgz
version: 0.1.0
osba-cosmos-mongodb-demo:
osba-cosmos-mongodb-demo--sample-repo-1:
- apiVersion: v1
created: "2020-03-30T16:27:13.489062-05:00"
description: A Helm chart for Kubernetes
Expand All @@ -107,7 +107,7 @@ entries:
response:
- https://azure-samples.github.io/helm-charts/osba-cosmos-mongodb-demo-0.1.0.tgz
version: 0.1.0
osba-mysql-demo:
osba-mysql-demo--sample-repo-1:
- apiVersion: v1
created: "2020-03-30T16:27:13.4958437-05:00"
description: A Helm chart for Kubernetes
Expand All @@ -116,7 +116,7 @@ entries:
response:
- https://azure-samples.github.io/helm-charts/osba-mysql-demo-0.1.0.tgz
version: 0.1.0
osba-storage-demo:
osba-storage-demo--sample-repo-1:
- apiVersion: v1
created: "2020-03-30T16:27:13.5013751-05:00"
description: A Helm chart for Kubernetes
Expand All @@ -125,7 +125,7 @@ entries:
response:
- https://azure-samples.github.io/helm-charts/osba-storage-demo-0.1.0.tgz
version: 0.1.0
osba-text-analytics-demo:
osba-text-analytics-demo--sample-repo-1:
- apiVersion: v1
created: "2020-03-30T16:27:13.5060898-05:00"
description: A Helm chart for Kubernetes
Expand All @@ -134,7 +134,7 @@ entries:
response:
- https://azure-samples.github.io/helm-charts/osba-text-analytics-demo-0.1.0.tgz
version: 0.1.0
tweet-factory-operator:
tweet-factory-operator--sample-repo-1:
- apiVersion: v1
created: "2020-03-30T16:27:13.5104606-05:00"
description: A Helm chart for Kubernetes
Expand All @@ -143,7 +143,7 @@ entries:
response:
- https://azure-samples.github.io/helm-charts/tweet-factory-operator-0.1.0.tgz
version: 0.1.0
twitter-sentiment:
twitter-sentiment--sample-repo-1:
- apiVersion: v1
created: "2020-03-30T16:27:13.5145249-05:00"
description: A Helm chart for Kubernetes
Expand All @@ -152,7 +152,7 @@ entries:
response:
- https://azure-samples.github.io/helm-charts/twitter-sentiment-0.1.0.tgz
version: 0.1.0
twitter-sentiment-cnab:
twitter-sentiment-cnab--sample-repo-1:
- apiVersion: v1
created: "2020-03-30T16:27:13.5192786-05:00"
description: A Helm chart for Kubernetes
Expand All @@ -161,7 +161,7 @@ entries:
response:
- https://azure-samples.github.io/helm-charts/twitter-sentiment-cnab-0.1.0.tgz
version: 0.1.0
ibm-cpq-prod:
ibm-cpq-prod--sample-repo-2:
- apiVersion: v2
appVersion: 10.0.0.6
created: "2020-07-15T16:32:34.607411698+05:30"
Expand Down Expand Up @@ -203,7 +203,7 @@ entries:
response:
- https://redhat-developer.github.com/redhat-helm-charts/charts/ibm-cpq-prod-2.0.0.tgz
version: 2.0.0
ibm-object-storage-plugin:
ibm-object-storage-plugin--sample-repo-2:
- apiVersion: v2
appVersion: 2.0.0
created: "2020-07-15T16:32:34.612556197+05:30"
Expand Down Expand Up @@ -238,7 +238,7 @@ entries:
response:
- https://redhat-developer.github.com/redhat-helm-charts/charts/ibm-object-storage-plugin-2.0.0.tgz
version: 2.0.0
ibm-oms-ent-prod:
ibm-oms-ent-prod--sample-repo-2:
- apiVersion: v2
appVersion: 10.0.0
created: "2020-07-15T16:32:34.663118186+05:30"
Expand Down Expand Up @@ -276,7 +276,7 @@ entries:
response:
- https://redhat-developer.github.com/redhat-helm-charts/charts/ibm-oms-ent-prod-5.0.0.tgz
version: 5.0.0
ibm-oms-pro-prod:
ibm-oms-pro-prod--sample-repo-2:
- apiVersion: v2
appVersion: 10.0.0
created: "2020-07-15T16:32:34.695882333+05:30"
Expand Down Expand Up @@ -314,7 +314,7 @@ entries:
response:
- https://redhat-developer.github.com/redhat-helm-charts/charts/ibm-oms-pro-prod-5.0.0.tgz
version: 5.0.0
ibm-operator-catalog-enablement:
ibm-operator-catalog-enablement--sample-repo-2:
- apiVersion: v2
appVersion: 1.0.0
created: "2020-07-15T16:32:34.697730479+05:30"
Expand Down Expand Up @@ -347,7 +347,7 @@ entries:
response:
- https://redhat-developer.github.com/redhat-helm-charts/charts/ibm-operator-catalog-enablement-1.0.0.tgz
version: 1.0.0
nodejs-ex-k:
nodejs-ex-k--sample-repo-2:
- apiVersion: v2
appVersion: 1.16.0
created: "2020-07-15T16:32:34.700484147+05:30"
Expand Down
Loading

0 comments on commit 87d88d0

Please sign in to comment.