Skip to content

Commit

Permalink
Add support for secrets for helm v2 (#79)
Browse files Browse the repository at this point in the history
* Add support for helm v2 secrets
* e2e test for --helm-store configmaps & secrets
  • Loading branch information
laghoule committed May 29, 2020
1 parent f7e3a06 commit 81c8d32
Show file tree
Hide file tree
Showing 6 changed files with 112 additions and 12 deletions.
2 changes: 2 additions & 0 deletions README.md
Expand Up @@ -107,6 +107,8 @@ invincible-zebu-metrics-server Deployment extensions/v1beta1 apps/v1
lunging-bat-metrics-server Deployment apps/v1 false false
```

In case you have configured helm 2 with `--storage=secret`, you can add the optional `--helm-store secrets`. Default configuration for helm 2 is configmaps.

If you only have access to a certain namespace (helm 3), or if you only want to see information for a single namespace, you can pass the `--namespace` or `-n` flag to restrict the output. Due to the way that helm2 stores configmaps, you will still need access to the tiller namespace if you are using helm 2.

```
Expand Down
10 changes: 9 additions & 1 deletion cmd/root.go
Expand Up @@ -38,6 +38,7 @@ var (
outputFormat string
showAll bool
helmVersion string
helmStore string
ignoreDeprecations bool
ignoreRemovals bool
targetVersion string
Expand All @@ -58,6 +59,7 @@ func init() {
rootCmd.AddCommand(detectHelmCmd)
detectHelmCmd.PersistentFlags().StringVar(&helmVersion, "helm-version", "3", "Helm version in current cluster (2|3)")
detectHelmCmd.PersistentFlags().StringVarP(&namespace, "namespace", "n", "", "Only detect releases in a specific namespace.")
detectHelmCmd.PersistentFlags().StringVar(&helmStore, "helm-store", "configmaps", "Helm storage for v2 (configmaps|secrets)")

rootCmd.AddCommand(listVersionsCmd)
rootCmd.AddCommand(detectCmd)
Expand Down Expand Up @@ -135,7 +137,7 @@ var detectHelmCmd = &cobra.Command{
Short: "detect-helm",
Long: `Detect Kubernetes apiVersions in a helm release (in cluster)`,
Run: func(cmd *cobra.Command, args []string) {
h := helm.NewHelm(helmVersion, namespace)
h := helm.NewHelm(helmVersion, helmStore, namespace)
err := h.FindVersions()
if err != nil {
fmt.Println("Error running helm-detect:", err)
Expand All @@ -158,6 +160,12 @@ var detectHelmCmd = &cobra.Command{
klog.V(5).Infof("retCode: %d", retCode)
os.Exit(retCode)
},
PreRun: func(cmd *cobra.Command, args []string) {
if helmStore != "secrets" && helmStore != "configmaps" && helmVersion == "2" {
fmt.Println("helm-store should be configmaps or secrets")
os.Exit(1)
}
},
}

var detectCmd = &cobra.Command{
Expand Down
19 changes: 18 additions & 1 deletion e2e/tests/02_helm-detect-2.yaml
@@ -1,7 +1,7 @@
version: "2"
name: "Static Code Files (including helm)"
testcases:
- name: install helm 2 configmaps
- name: install helm 2 configmaps and secrets
steps:
- script: |
kubectl create ns helm-system
Expand Down Expand Up @@ -34,6 +34,23 @@ testcases:
- result.code ShouldEqual 0
- result.systemout ShouldContainSubstring "NAME NAMESPACE KIND VERSION REPLACEMENT DEPRECATED DEPRECATED IN REMOVED REMOVED IN"
- result.systemout ShouldContainSubstring "kindled-toucan/kindled-toucan-basic-demo demo1 Deployment apps/v1 false false"

- name: helm2 detect in-cluster show-all wide namespaced confimaps
steps:
- script: pluto detect-helm --helm-version=2 --helm-store configmaps -A -t v1.15.0 -owide -n demo1
assertions:
- result.code ShouldEqual 0
- result.systemout ShouldContainSubstring "NAME NAMESPACE KIND VERSION REPLACEMENT DEPRECATED DEPRECATED IN REMOVED REMOVED IN"
- result.systemout ShouldContainSubstring "kindled-toucan/kindled-toucan-basic-demo demo1 Deployment apps/v1 false false"

- name: helm2 detect show all wide namespaced secrets
steps:
- script: pluto detect-helm --helm-version=2 --helm-store secrets -A -t v1.16.0 -owide
assertions:
- result.code ShouldEqual 3
- result.systemout ShouldContainSubstring "NAME NAMESPACE KIND VERSION REPLACEMENT DEPRECATED DEPRECATED IN REMOVED REMOVED IN"
- result.systemout ShouldContainSubstring "invincible-zebu/invincible-zebu-metrics-server default Deployment extensions/v1beta1 apps/v1 true v1.9.0 true v1.16.0"

- name: cleanup
steps:
- script: |
Expand Down
17 changes: 17 additions & 0 deletions e2e/tests/assets/helm2/helm2secrets-deprecated.yaml
@@ -0,0 +1,17 @@
apiVersion: v1
data:
release: SDRzSUFBQUFBQUFDLyt3OFFZd2t5VkhhMnh0akp6YVk0YmpIOFFuM25ObmQ4VmIxenQxNmRXcTBpTG5adFQzeTdWNXJaNzJXdFZyZFpGZEZkNmNucTdJdU02dG4rbVlHZ2N3UC9FQkNGano0SUV2d1FNSUNKQjQ4TFBqeDRnRXYzaUFRRmo5TGZIaWd6S3lxenFycTd1bVoyNzJibGRuSGJIZFZaR1JFWkdSa1JHUkVrMTlrNllTbEVSdHdERDdDUWI3K24xZkkzMTc1N0pYT1gxMTVQRVpJVUVzV2dVSTVRUWxqcW1DQW1FS01HUmRUakVNZ1pEY0ZDa004aElTbHVVWUZVNUdER291Y3h6QkFvQU9Pb0FWd3BuU0JUa0d1V0RvQ1BVWVlDczdGSVV0SEpCSkpRdE80UndqQVFUN0FTSE1Zb1lZZ2tQUVFPbDJhTWRVdEVJUUg3NmlRaWU1a2E0Q2FiblZURWFQcWtQWFBmL2FQZnZUSFAxMzc0bTkvN3g5LytNb2J0VytiWDl4TmxhYWNReVNTaktQR04vN3ArMWZJMzd4Q2ZxRkFHamd1MSsrTXRjNVVyOXNkTVQzT0IyRWtrcTRoU0thb1VRVXNqZklCMVVKMjYrUGV1T0M0em1mZUNyZHVoVnViT3c4SzZldzVhVE1GRkNLZUs0MHlPR1F4QWgyTkpJNE1EaEJEa0toRUxpT0VYTkVSUWt3MURkOXFNTlBya004SmpnbVZCN2xhL3hVUkhqSTkvazJWQ2FrbGphazBSUForalh6K0FOTVU5WmhTUmRQMTF3OUMrNkVCOStpVnlkWjMxMjZGYjRkMzFuOThsZnl5eGlUalZLUHFQbnovOGYyOVVCL3A5VCs3dXByV0hCOERHMEw0aFBJY1ZVZ3pabmhtRVlhUlJLb1JUazh2azE0ZEh3TnlaYWt5clBiZ095S0hNWjBneEV3WlFtSTc1M1ovMS9MTUlnVExCeE1wRElVRVBXWUtKSEtrQ2tPWVNVZ1JNK1NRY1E2cDBIQW81QUdZQmFvTmdEemxxQno3a1VpSGJKUkx0UE9WWEcvM2QwazVyOGkxTXFvaWhnN0pONUFuRUkycDFDRTVQZzRBMHhpQzAxT3kvdWRmSUsvUFZ2Q0RNZklNcFFwMXh0ZS8vNFhqNCs0bVRGalNBNFVhaG95am5tWjROOG1WcHRFWWU3RFpQVDBsQm9yY1A4cG82dmhQYVZKTWpPV1VCVndBTVE1Wml0Q3BxMmRvaG5Rc1FRVVF6Ym1HY01lT2ZtandsVHBpSU4rZm9KU0d1eFBRTWs4anVQTzIvY2lTdlh3NFpFZlFDV2JJU2s0ZG1UdE9yMmcxeHpEbmZBb2Y1cFN6SWNNWWFKWlpCa0x5YlhUWUxidzJjeGhtakE1SE5GY0lTaVFJMzZ3MnRtTjd5SkRIQ3FoRTRDeGgycWlFY0V0d2ZUQzFJcm4zY00vQUdnMVZHVVkzUXJJN3JCYlpJb2xFcWlsTGxaT2VlOGEwVTVDQjJlZUdUbU1WRFBFRnRXZEoySURXcGV4dHZQSmxKZGdTWmlIQVNwSTNlNlg4OHFibG9uZDM5Y1gxNkt3RTRyQ0VqNG85WkFkWHROYWVucHZBVExKVUQ2SHpaUlY4V1hVYTJOeTg1MUczUlo5cmF1aXRyOWs4RTVUSzJBcXEzQm9YQ3VPZ09CMGdQM3VkTFhCbklWZSswTjNuSjhXa0p5QXg0elJDNkh5bEE1MFBPaDluZDVWbXlMS214MVNYeTY3TWR2ZzA5dGhaY2lzb25yTlBTdVVzSVJyN1lKNCtMeE5PMDBLV29xSlJKUEpVRzFaeWhhdlN1KzFHUFZ5MHMrdGc1YkZxQUFFQWpvOHI4cSt6Tk9KNXZNeHdoRGNXb1UxOXBzdE4xWmlnVTN6b3JJUmt6czVaLzdzMTh0WFpVVlU2UVJnSEpjVVNhWXd5S0gwbEtUaUdVNXJ3OWQ5WmE0aEZEbWprQytPQXBYRVBkdHpBUjRJam9Sa3Jka1lQTERUTjlWaEk5cEU5em1jT0FrbFFVK056OVFqWWRlMkJtaXFOU2UvNEdFcHFGNXgzSVp5ZUJoNGZqbjRDYnErcm5oVWh6YkllckliTHdsc0RzSHhFWVNPcUljWGhZd2ZWN1Y0Qk1FYkpOQjAxSUFwZnJjS3lVRW9WaTRFV3dZVGhZUTg2V3ViWU9jODRqSm0reURnYUp5eXRCc3Fjb3hWc0FEUmpYNWNpejFRUG5uYnFqbC9uV1NFWDUxbGJpRXpFcW5PejQxeEI5MzZDY21EZmpWQjNia0xIK0tEbS8wT3FvM0huV1YxNy8yU05mTW5UM2x5UGd4aTVjK09EU0E2Y3B2N1BxMmRvNnNwNjJWTHBkMWthRzBlNHJiRExkTVhiL25CNjJpdDB1MDUrZ1VobE5NS2VkYTREQi9jeXFyS3hHbzl3YUNndU5XU0pwRTB3MGJJZERVUFFFSmJLQjkvRlNCZGE2RWJ2MVV5aEpmVHNwWmwzQkZTQzhCYWtLUXI3dUdscDEzL3ZNK1JYWi9yWnRxRS9XWHRobW5reEcxclh6SmRTMWVZWkl6czBnRTZuWVlMc1YvUEdHS0xxaXpWSDlXOWRwYW4ybnBVcnJqeWJWYjBkb2E0K0cvTlZmYkUyakpnVHZMM29tY3J1cHk3ZXRhek9JUitQTktaR0Z4UXBxZVlzbXM3anlYR0VVUzZabmxvd1Z0QmFBbHFscllBbG16Q09JNHlEYzJsSGpmWEErbGlPdTdtK3hvL1h5SnV6M2VCd0Y2aUQwaEcwMitJSGE3N2VWOXBkclBMSE1yWXZxeU5nQkduVEYwM1AyWEhqTzRkYWZJY21IRUk0Z1pTbE1hWWFidnRvekhyWXJ6Uk5oYmFHcEpDR2VWdU9ia3pqd1JhQlN4TzlpUWtNbWt4STdXbGhJYTRtUHZPaUpBb2drMEtMU1BBZVBON3BGODgwbFNQVWZZdkFadjhJZ0VLT2tSYnlZb3QzeGtyb2FZWnphVFV2REFoWi85ZFhTYWVwd1NxZ0dhdnI3MTgzSFk1MkVxNXAzR25HSkk2WTBySmgyVzJ5ck5nQTIvM2R4WHVnQUEzclh0ZkxxTytsSmhVeTdhMTRkTSt4VHFzYzJBQWo1NCswQkRlWldTQzNDZ0FzdFVZVjl3NVk5dmk5dlNjbzJYRGFNL0UybG9qNmtnbGpkUit3bENWNTBvT3RXN2RteU1xMzduSE5QUDVCelptdE16ZHpabi95YVRpelB4dWV3M04zVXM4aHIwdnF3UDdvZFhKOW9VNjZPNGNFVSsxVTgzdXYrN28zODFZYVZ1eGVOZXhuN2lTZldUYi9IRXVNVy9pZXg4djV1VG1UT0lrWlp4RlZ0UU91ZkZpY2Y4VmNCVkhlMHBoL3ZFYmZSU2hjUVlDbEUrS1p0MHpFVGpST041dit5ZXoxQ1JUZXlEdE5iSlhETTllUnlrUzg3VGszRldETE8zSmpKVTFIQ0c4ZTRQUW12RGt4S0tCM3Q4N204YkY5YjBKNys5bEJuY0NIdWRCWXA2UkZtdmVnVkphMlNJb3paSWRUcGVyaWE3M3FRY2RiOEhrak8yVE8zSTBaV1VKSDJNODUzOE5Jb3ZhazFIelRGdFhaT01xSXl1bkZRbm0wNU5VMmRSYzBqUTF1eDBMcGg2Z1BoVHdJMFkvSjdCNmZ2U3pPL1JaZHhjMEtTbSs3TktiQUl5M3BUZ1hYMU5qcm9ETU8xeHU2M2hoMEEwSzQ0WG5oeS9WK0p1UzZWS3JYeFZyV0ZjWStNblpDS0thRnREcmRlcTNwcU5LamhsYjBiWVJhTXpwdVRGYTk5RWswc2l0dWxNSDdGMEIzSWRIbWJSQkVLSFVRTTNtM3E1T3M5WmFMa1JaS3h5amJJNTAvRjVoNDVPNDd0MisvWFFOb2F6R1ZJMVduMktDcDYrM0NGYWdGUitYWVNsdGNxTk9pd1MxYUdRR1YvemliWUlwSzlhVVlZSzgxY1VOemF0RHQrRzNyclRxVkVtbk1Wc2RlQjE4RmZTUC9zZ1J6QVhrMjBqTFpZZllISHVrelVUZmd6NTVnSW5pZTRBTmpPaG9yNkZhb3FYaUpnZXhUUGU1QlF5bGJSNURkMkU4OC9QV1pmZXA5QW0rMXdXb0tsNG9ZOTJxZXhnSlorSUJ0UVhoMmhRNkhMRFhSeXpKc0pkQlNURnB3bFBYVGRTNHlEMjRwUHJjNlhoS3V2U2lZWkhwNmo4a2VIQzkwQnJ5VlVQV0RhTTRDM0psM1VxMy83bFZ5YzZITFhCeEJ4YjJrYzV2LytaV1Y3eGVYcGNYS01PRjhQdldTY09HbDg2NXJrY3YvcnBIMTJUSmtjUkUrLy90YTI3Kzh4NVRNTTZOajcrYnhDSFYxNkRkRjd2S3RqWENtMzBaUVc0T1hNTjE0Z1ZCc2xjaXlDbjlXV0lLRXBkc1R5cmd0UmJNeitFOXFEc1ZxdzB2bG1IMDdpd0o2OUsyVU5taW9QVHViaWprbzZuUTgxMERRMC8vMS83cGFVMytWRmJibTZ0bDNENnRvL0Y1eGVqb1hibzdOdWRpTlFxa2dsSE54aVBFT3plaUFjYVpaZWFWemJmTWFBUmdxbDUxeENwK2JsWGlVcDl0cU81MFM4S2F1RW5QU3ZQMldRcmxnaU1MM1dKb2ZMWHFiWnhuSEJGTk51WDhqMHdMMERxR1NWQk11OUhmdlZaU1k3N3Y5bmRyM2VqaFJqQ2tkeFFEc1ZmdFdvU0JIUGJqejFhKytmY2VQT3RiL2NNMi9acFNDWXpCd3VUeTM2ajk5empuRDUzUHpiUXMxY2oyZWxXajh6Rjk0MTVLSVZRSXRvQmtyL0FjekdsUE5JanU4bE53bFRSNyt4NnQrUWx1ajB1NXZVT1RDblhMKy9hdHp2WnEraUQ5V2VqQXdNNzJjeDI4cjg5UVpJMDlDTmU2T2hUam85TUFLVWVWUmhFcFZOck9lZFNnZDRNUHlNcm9JN2dlNW1nN0VFZkZqYlhoNnJUdGdhVmVOcjdrYUhCUGtsamQ0UVZSOHVIWm9LN3MvZkQrQXNoai8rQmhXcUhCcjVBd2FONERkU1ZVck9aS1lRZkExV0pCZ3VHYlRtRXBUcWN1MHdrT2NvQ1NrODVldmtiOTR6V3d2US9VRzdHVVlzU0ZEQllkajFHT1U4T2pkN1oxWjNPbVZ1anNqR0J2NTJVK1ZFWjZkaVQwWVVxNlFrUHJ1V0RRVmJXeTlWU2Jic0lYcmZnVmpBNGNyWUF3dDZPN1FWclFyMUxiQXRURGpURmxrTjRFV3RjMEtScGlhMkFsanYzYS9XSmRLbzh1dFJjanNrckxKR25NMHpiOWhySlhtdDNpMUpGdDAzeEU1NkduR0lzcjVGQTZwNFdyTUZCVE85cGNNWDFPUmwyWC84eXYrcDJWemdCWVdhVUpUT3JLRjNNM2lmRmZnT3hRU01CeUJOYmxtZzNESVJBdzAxMEpGbEZ1cE9FenpHd1RDNWxvUi84QnVpNm0rQ3p4eFdMWEZHRmpxSC9tUWlCanJJanEwSXlSK21EUGJpakNUa01GditNOFZBdVVhWldyV1hVeFFjanFGMUdFMEhCbW1NeEVyb3g0V2J5bEtsSkNuWlhPSDJmMTV5bXlac09XN3NZTmgyeUFBUEtKSnh2R21JOFZLeHBMbU1Ic2tmUnZOdWhSa2dFamgvamYzQ0pURVY1dkkyU0YzSTFFa0ZYc3dpcVJ4TUVaQ2pEaCtNTE5remZDWkp2R2Qyd1JBMDFFUEpyWmR4bXhWTDlHNE8zd29kRitpd2xRWGsvblphWGo2akd4QUFNVmQrOVE5Ti9hWkVHdjFIQUFXVXJJc0QyZGFwNUFQQThWR0tjWVFvZFJzYU9XbmJvTENNa2wzN2lZbHN1RXlrUWFVb3c3S08rWkFjMFdJVnk5NWZFcElMYWRqbi9pWkZFTTlxWkkwOXZYczRtZUxrRVlHMmNGWFZ5aHVRUDAreEQ3YkFHdWZxcjRmLzRTQ1VVNGxUVFVpcUdpTWNjNUxGWXdrTTQ0S0J4ckhnVWl0U29ZR0Y4QWVJaVJDSWxBOWs5cE1WRVlYWWhHcHJxYnFRSFZ0dFNtenBYTkZDVjIzbWpRT1pyTUc1WXdCaldPUkJtYkNycG13QUVFWlVwNk5hVmlmcVJxVmliZ0gxNjZaRVhQdVVad3pHcGdGcUNZcUpPcW43Z29OcWc1ZzVUVFA4ZTNuQkZGSEhzdmRHcHp4Njk1UGVWbFo0TSt5ZkFMM3BlZStsRjhkL2RhanJqeEpRbG9aWkxNT1g4Y2ljNW81SXNkSXVSNS9STXJjdForSU5sSTFpTC94K0hGL3o5WkdNTTBvdjRlY21uMGwwbGoxNEsxYlJnV2I2ZVFYTnRXY0xMQ05KZnRsVEhqZm1IMnJ1YVZGQW9nYVlTWkFMRVhXZzZjZHlya3RTeTdYNDVFUSttdU1ZM0cvWHdzdkN5ZC82OWF0VzF2bHM0Y2lOVVBteEtFRkhQRnFYR2hqMTFXK3EvdXlBYkFkMjJZd2hjVWJZOGF0WFdvZk80ZVFaK2F3MlMvYjhzcmlVNVlPeGI1RDE5Z0dCVUJKMGF3c3ZBWHFGSy96b041clNjcDFjemNZcnB5cXFJN1k3VnZEMHN5UXVCUDBUQU1nY3hNRFdUdG14bmFyVnIwZ2l3ZmQ5aUhUU0JhMUV6ZGs4OTllSVQ4ZkdyZWFqVkloY2YxZlh0bUFQdFhtVkxWaWRZK05VNWZDSUdmY3hMcVEwZWlBanRCYXNjZm1iRkI1Wm05MFFJMlJjeGh4TVhCSkhKYU9iaG9mZ21vMlFhdmgzbk56TEc5QWlpUG4wMXpQSkE3WkVjYnVHUDdTalJDTXJvRkk3VWhERW1Rb2diTVVRL0wrdHgvZWY3Ukh3bnQ3SCt4cElaRnN3STVJRXBIQ2s1MDlpSmxVSkJ3eDNiVi9IUmNrSEh3a3UvWnYrV0E4NnBvLzVWYzFTYnN6UkFNYUhlU1piVTFVWkROVWh4blpEQWYwZ0d5R09zbkk1bStSRFhoQ0pSTzVndDE3OXhVSk15bE1BRXBDRmlQdE9qZ3B2a3MyZi9nYStkeWorOXYzSHR3UGszajlCNjl0Tkc4ZnlkTjZaKzZ6NnhjN1JHOWNxS1VYSHBVUHkzNVBLckhxRTR0RWtva1VVNjJBc3dPYzdTVXRzbjBvT3pPZmZtUG1XL1pGRE51RmIrbnpzckptei94VWN4b0ZwWitLTjR4TzJrL1dVZVdDeGlxRXg2THlaQkVHMUpDZFp5STFjc2lWRmtuQmxmVk9ISzE5S1JJVHB1UUt0bU9hYVpUT1VaNHJkck05dXZhMTZnNjRHSFFUYWc5ZnBjMG02bVlWcm9BNlhEZENRamFNR3JudGFWa2lwRThsVGRCTWRRTDNVRVdTV1F0Z3Y5bnVKUklFQVp4QTlaZnNlL21wZlRnQkY0alo3RWpnMkt6blFlQUU5bzJ4Mmk5R3ptSTNiN1R4Kzh2am9jaHJsdnZYakxlV1k1L3N6NzE4TVdoMmg4VWtOOHVRaTBLS2g2MWVzeGt0YzNxeERLSzlkbk5hMFlBYU5tTzdSZFF3VmRGeXpuRFBrTGRQOWxzRnFZWXdyNWx1aFZCdnh1ZWNlZ2xQN3Mxd3h4ZDJzN3pBeXRrODg2SURBMyt1K0tEQ3ErbG9obERUa2NGa2c0YTNLcEJaNkRDRE5NOUtCVG1CZlQraUtNZDVJVVZqWE9HTm1ZRlBueGxCeTVFRjJYRzVGbXZFZ2NwUm5saTdVb0pWWHI2RjdYK3Ird0FUdzN0bHRFelVaUk5vdGp0VGhXYms4ZWsrMmZmY2Z6UDJQYWEwc1hiR1RRVWpKZGNkV2tBaFhDL0NOK1YzZ1A3RzNhM3d6bzJLR0QvR01EZ2ZHbHlGeDFIRWxrQ1ZDWU1NRXhVbFpkeFJEZkV1Z2gxRUdZdFlpRHdaWUdHWWl5cTBFOWpmMmlmN0xaZmFnRzliQjIxcWVNbWttQmp6N3JMdHpxZDJUSTdkTGkvNThMM21wVGptanE3NXgyNEpDN1dyaWk4TUdsdndZT0taaWN0WVRXbkN5WDRWVTlrMXFaeTFBWnBneVBYVzJnaTlsRXc5NkxMRWVpSFcwcEhOU01VTU51ZFErUUlpODhiQWR6cDJEWHhudk01WDlXNHhZM1A2QWVaUVMrTzRGS2xuTGl5OTliNkZ4ZUx4Zm9TaGNtc1hvREltM0RlczFxUnJBWGlVQ1dYQmI5OSsyNE0zbnFtQmZ6ek5iTDZveEt0RmFkbFBZTDl5WE4zcUxMb2o5dXdtblhjVjdGdTdzeTRxRGE2aWFoeG10NFlzVlpxbUVhcGZMNXpTdU1qSFNXdjFVekYvMmdYVDFmeGdPeUU5c2hQbTZYT1lzcEZmMkFjd3VoSEhabG1aQWFYY3kxTkR1ZGMyLy9RSythV0lkU01XZU1xMi92dFhObUJuMSthYzhqUTFSNXBJNGV2ZnZIOFREc2NzR2dQbFJtR25vTVlzVTYzMGxYWFFiY2M3MmJBLzdzRlpwSlZCWVZScmRnQldOalpzcGtETHhKOExLanByNU9yeEtkbjg3NjhZZjRWc3dKNGQxYXluNjU2bjl1T0NCUjJOM3hVS1dzVnhyVXVQT2VWenhlVkdnMGozZXpuMXE0ekdkSTFyak1lTWM1U3J5dVFjSGVZdnBJRzg2VENzMGlqKzRvWDMvNjNlODFxOVYxU3B0dUs4aUs3Wnk3am5Mbit2NjZwV1lYN24vZ3ZwWlZxK2tNK2hHZjhUV1BkTDFVNS81czZvQ1MrZXhmd1hPRU5mcUdaYzVwMyszRmY4REM0dmp3YTB5cG1lYjdYU2N0b3ZYS0IwYVZYaWt5Z3grZ1Fzd3J6ZkRTRG4vTldBeTdqUjUzWGxMKzJ0bjdXTGZJd20ramw4TFNHN2ViTnpNVlBlNkI0bEg3OTM5REt1NS9rNlB1ZDJPUzJaMEwvY3YxQUQ1NEsycXFVOHp2b1M1N2ZncmJENzUvZklyZHlnZHE1MGNNL1ZpU3h0VDZ0VmpWek9aclJQb25Pc2RpM3ZUZDIrb0svVDFaNWszcVc5Si84RjEvZXJkYUJkSmlybk43S3QzSmQyZG0yQ3A0eXRLb1haUDF1djBIZ1dHT3kxWjJkVU1YaUFjK29aR20rYmxRMk4xMzZOdy9OdW9WdlExcmFrUjIxcDA5blRaeGRzSVR2bnNkZjhsWmhQN2VkZlBzbERyL1VETGhkekRUL0YzMmg1NjRldmtvMHpnZ1NOU3E5ZjdZdjRqVnNMMVdCQitYdm5INjZlby94OUJUb3VqZHQ2V1l2V3o4ai8zTDc5OXB5U2RPZERMS3BBMzd6eXVYZXV2UHR6aGJiK1h3QUFBUC8vOW5renR2aGZBQUE9Cg==
kind: Secret
metadata:
creationTimestamp: "2020-04-02T21:24:40Z"
labels:
MODIFIED_AT: "1585862680"
NAME: invincible-zebu
OWNER: TILLER
STATUS: DEPLOYED
VERSION: "1"
name: invincible-zebu.v1
namespace: helm-system
resourceVersion: "265249"
selfLink: /api/v1/namespaces/helm-system/configmaps/invincible-zebu.v1
uid: 362f70c7-91dc-4478-88eb-08a7b368bfd0
19 changes: 15 additions & 4 deletions pkg/helm/helm.go
Expand Up @@ -33,6 +33,7 @@ type Helm struct {
Version string
Kube *kube
Namespace string
Store string
}

// Release represents a single helm release
Expand All @@ -55,11 +56,12 @@ type ChartMeta struct {
}

// NewHelm returns a basic helm struct with the version of helm requested
func NewHelm(version string, namespace string) *Helm {
func NewHelm(version, store, namespace string) *Helm {
return &Helm{
Version: version,
Kube: getConfigInstance(),
Namespace: namespace,
Store: store,
}
}

Expand All @@ -78,13 +80,22 @@ func (h *Helm) FindVersions() error {
return err
}

// getReleasesVersionTwo retrieves helm 2 releases from ConfigMaps
// getReleasesVersionTwo retrieves helm 2 releases from ConfigMaps or Secrets
func (h *Helm) getReleasesVersionTwo() error {
var helmClient *helmstoragev2.Storage
if h.Version != "2" {
return fmt.Errorf("helm 2 function called without helm 2 version set")
}
hcm := driverv2.NewConfigMaps(h.Kube.Client.CoreV1().ConfigMaps(""))
helmClient := helmstoragev2.Init(hcm)
switch h.Store {
case "secrets":
hs := driverv2.NewSecrets(h.Kube.Client.CoreV1().Secrets(h.Namespace))
helmClient = helmstoragev2.Init(hs)
case "configmaps":
hcm := driverv2.NewConfigMaps(h.Kube.Client.CoreV1().ConfigMaps(""))
helmClient = helmstoragev2.Init(hcm)
default:
return fmt.Errorf("helm-store should be configmap or secrets")
}
list, err := helmClient.ListReleases()
if err != nil {
return err
Expand Down

0 comments on commit 81c8d32

Please sign in to comment.