Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial support for Helm release resource #1677

Merged
merged 54 commits into from
Sep 3, 2021
Merged
Show file tree
Hide file tree
Changes from 48 commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
f401997
Initial spec
viveklak Aug 10, 2021
0da7ff0
More schema gen changes
viveklak Aug 11, 2021
a966745
Nodejs SDK
viveklak Aug 11, 2021
6d7d692
Python SDK
viveklak Aug 11, 2021
4be512f
Dotnet SDK
viveklak Aug 11, 2021
f39dc86
WIP Golang SDK
viveklak Aug 11, 2021
a97e8c6
Reorder the build targets
viveklak Aug 11, 2021
416206b
More schema fixes
viveklak Aug 12, 2021
723552f
Add provider config args
viveklak Aug 12, 2021
6a721be
More provider config
viveklak Aug 12, 2021
c0de4e4
WIP provider
viveklak Aug 12, 2021
9143bd2
Codegen changes
viveklak Aug 12, 2021
4279f5f
Schema
viveklak Aug 12, 2021
0e557f9
Dotnet
viveklak Aug 12, 2021
3409dac
Nodejs
viveklak Aug 12, 2021
0be00ff
Python
viveklak Aug 12, 2021
73612f7
Go
viveklak Aug 12, 2021
64a9508
Add diff support
viveklak Aug 13, 2021
067bbdf
Adding delete and read support
viveklak Aug 14, 2021
581e133
Checkpoint
viveklak Aug 14, 2021
6dd5148
Update support
viveklak Aug 14, 2021
972d3fa
Provider config
viveklak Aug 15, 2021
40738e4
Bunch of bug fixes
viveklak Aug 15, 2021
0555667
Fix preview handling for release::Create
viveklak Aug 16, 2021
709f7e2
Merge branch 'vl/HelmReleaseProc' into vl/HelmRelease
viveklak Aug 16, 2021
dc01943
Gofmt
viveklak Aug 16, 2021
6dc78e7
Review comments
viveklak Aug 17, 2021
eae9689
Moving manifest around to add to diff
viveklak Aug 17, 2021
dbd46cb
Add copyright clause and fix package for Helm Release in Go SDK
viveklak Aug 17, 2021
e6a317d
Generated Go SDK
viveklak Aug 17, 2021
a461ebb
Fixing linting
viveklak Aug 17, 2021
d143789
Make wait default
viveklak Aug 19, 2021
58a91d0
SDK changes
viveklak Aug 19, 2021
b8e4624
Use hierarchical values for set
viveklak Aug 19, 2021
57053fa
Adding SDK changes
viveklak Aug 19, 2021
4594271
Drop manifest for resourceNames
viveklak Aug 20, 2021
4dc6f42
Schema and SDK
viveklak Aug 20, 2021
8554465
Linting
viveklak Aug 20, 2021
c6d436f
Disable values yaml and manifest for now
viveklak Aug 20, 2021
80f64dc
Move go sdk to helm/v3 namespace
viveklak Aug 20, 2021
ac881cb
Fix replace logic and add debugging
viveklak Aug 21, 2021
5d53bac
Add tests
viveklak Aug 21, 2021
eee1bb9
Merge remote-tracking branch 'origin/master' into vl/HelmRelease
viveklak Aug 21, 2021
3e393d9
Changelog
viveklak Aug 21, 2021
0de2b1c
Fix build/linting
viveklak Aug 21, 2021
47cff40
Use the default 5 min timeout
viveklak Aug 21, 2021
4c709ec
Merge remote-tracking branch 'origin/master' into vl/HelmRelease
viveklak Aug 30, 2021
78dd222
Merge remote-tracking branch 'origin/master' into vl/HelmRelease
viveklak Aug 31, 2021
baec323
Remove unnecessary resourceType constant from schema
viveklak Aug 31, 2021
e243442
Address PR comments
viveklak Sep 1, 2021
bf40c21
SDK updates
viveklak Sep 1, 2021
bf34ece
Remove ReleaseSpec and flatten inputs
viveklak Sep 2, 2021
f1cc874
Fix tests
viveklak Sep 3, 2021
3369a90
Rename repositorySpec
viveklak Sep 3, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
## HEAD (Unreleased)
- Add initial support for a Helm release resource - `kubernetes:helm.sh/v3:Release`. Currently available in Beta (https://github.com/pulumi/pulumi-kubernetes/pull/1677)

## 3.6.3 (August 23, 2021)

Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ python_sdk::
cd ./bin && python3 setup.py build sdist

.PHONY: build
build:: k8sgen openapi_file schema k8sprovider dotnet_sdk go_sdk nodejs_sdk python_sdk
build:: k8sgen openapi_file schema k8sprovider nodejs_sdk go_sdk python_sdk dotnet_sdk

# Required for the codegen action that runs in pulumi/pulumi
only_build:: build
Expand Down
55 changes: 47 additions & 8 deletions provider/cmd/pulumi-gen-kubernetes/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (
"io/ioutil"
"os"
"path/filepath"
"regexp"
"sort"
"strings"
"text/template"
Expand Down Expand Up @@ -166,6 +167,9 @@ func generateSchema(swaggerPath string) schema.PackageSpec {
return gen.PulumiSchema(schemaMap)
}

// This is to mostly filter resources from the spec.
var resourcesToFilterFromTemplate = codegen.NewStringSet("kubernetes:helm.sh/v3:Release")

func writeNodeJSClient(pkg *schema.Package, outdir, templateDir string) {
resources, err := nodejsgen.LanguageResources(pkg)
if err != nil {
Expand All @@ -174,7 +178,10 @@ func writeNodeJSClient(pkg *schema.Package, outdir, templateDir string) {

templateResources := gen.TemplateResources{}
packages := codegen.StringSet{}
for _, resource := range resources {
for tok, resource := range resources {
if resourcesToFilterFromTemplate.Has(tok) {
continue
}
if resource.Package == "" {
continue
}
Expand Down Expand Up @@ -230,7 +237,10 @@ func writePythonClient(pkg *schema.Package, outdir string, templateDir string) {
}

templateResources := gen.TemplateResources{}
for _, resource := range resources {
for tok, resource := range resources {
if resourcesToFilterFromTemplate.Has(tok) {
continue
}
r := gen.TemplateResource{
Name: resource.Name,
Package: resource.Package,
Expand Down Expand Up @@ -265,7 +275,10 @@ func writeDotnetClient(pkg *schema.Package, outdir, templateDir string) {
}

templateResources := gen.TemplateResources{}
for _, resource := range resources {
for tok, resource := range resources {
if resourcesToFilterFromTemplate.Has(tok) {
continue
}
r := gen.TemplateResource{
Name: resource.Name,
Package: resource.Package,
Expand Down Expand Up @@ -315,14 +328,38 @@ func writeGoClient(pkg *schema.Package, outdir string, templateDir string) {
if err != nil {
panic(err)
}
renamePackage := func(fileNames []string, sourcePackage, renameTo string) {
re := regexp.MustCompile(fmt.Sprintf(`(%s)`, sourcePackage))

for _, f := range fileNames {
content, ok := files[f]
if !ok {
contract.Failf("Expected file: %q but not found.", f)
}
files[f] = re.ReplaceAll(content, []byte(renameTo))
}
}

// Go codegen maps package to "v3" for Helm Release. Manually rename to
// helm to avoid conflict with existing templates.
renamePackage([]string{
"kubernetes/helm/v3/pulumiTypes.go",
"kubernetes/helm/v3/init.go",
"kubernetes/helm/v3/release.go",
},
"package v3",
"package helm")

resources, err := gogen.LanguageResources("pulumigen", pkg)
if err != nil {
panic(err)
}

templateResources := gen.GoTemplateResources{}
for _, resource := range resources {
for tok, resource := range resources {
if resourcesToFilterFromTemplate.Has(tok) {
continue
}
r := gen.TemplateResource{
Alias: resource.Alias,
Name: resource.Name,
Expand All @@ -349,7 +386,8 @@ func writeGoClient(pkg *schema.Package, outdir string, templateDir string) {
files["kubernetes/helm/v2/chart.go"] = mustLoadGoFile(filepath.Join(templateDir, "helm", "v2", "chart.go"))
files["kubernetes/helm/v2/pulumiTypes.go"] = mustLoadGoFile(filepath.Join(templateDir, "helm", "v2", "pulumiTypes.go"))
files["kubernetes/helm/v3/chart.go"] = mustLoadGoFile(filepath.Join(templateDir, "helm", "v3", "chart.go"))
files["kubernetes/helm/v3/pulumiTypes.go"] = mustLoadGoFile(filepath.Join(templateDir, "helm", "v3", "pulumiTypes.go"))
// Rename pulumiTypes.go to avoid conflict with schema generated Helm Release types.
files["kubernetes/helm/v3/chartPulumiTypes.go"] = mustLoadGoFile(filepath.Join(templateDir, "helm", "v3", "pulumiTypes.go"))
files["kubernetes/kustomize/directory.go"] = mustLoadGoFile(filepath.Join(templateDir, "kustomize", "directory.go"))
files["kubernetes/kustomize/pulumiTypes.go"] = mustLoadGoFile(filepath.Join(templateDir, "kustomize", "pulumiTypes.go"))
files["kubernetes/yaml/configFile.go"] = mustLoadGoFile(filepath.Join(templateDir, "yaml", "configFile.go"))
Expand Down Expand Up @@ -394,15 +432,16 @@ func mustRenderGoTemplate(path string, resources interface{}) []byte {
bytes := mustRenderTemplate(path, resources)

formattedSource, err := format.Source(bytes)
if err != nil {
panic(err)
}
contract.AssertNoErrorf(err, "err: %+v path: %q source:\n%s", err, path, string(bytes))
return formattedSource
}

func genK8sResourceTypes(pkg *schema.Package) {
groupVersions, kinds := codegen.NewStringSet(), codegen.NewStringSet()
for _, resource := range pkg.Resources {
if resourcesToFilterFromTemplate.Has(resource.Token) {
continue
}
parts := strings.Split(resource.Token, ":")
contract.Assert(len(parts) == 3)

Expand Down
Loading