Skip to content

Commit

Permalink
Schema-based python codegen (#1160)
Browse files Browse the repository at this point in the history
  • Loading branch information
komalali authored Jun 26, 2020
1 parent 570baf2 commit 6345139
Show file tree
Hide file tree
Showing 298 changed files with 12,038 additions and 16,064 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

- Fix prometheus-operator test to wait for the CRD to be ready before use (https://github.com/pulumi/pulumi-kubernetes/pull/1172)
- Set supported environment variables in SDK Provider classes (https://github.com/pulumi/pulumi-kubernetes/pull/1166)
- Python SDK updated to align with other Pulumi Python SDKs. (https://github.com/pulumi/pulumi-kubernetes/pull/1160)

## 2.3.1 (June 17, 2020)

Expand Down
78 changes: 25 additions & 53 deletions provider/cmd/pulumi-gen-kubernetes/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import (
dotnetgen "github.com/pulumi/pulumi/pkg/v2/codegen/dotnet"
gogen "github.com/pulumi/pulumi/pkg/v2/codegen/go"
nodejsgen "github.com/pulumi/pulumi/pkg/v2/codegen/nodejs"
pythongen "github.com/pulumi/pulumi/pkg/v2/codegen/python"
"github.com/pulumi/pulumi/pkg/v2/codegen/schema"
"github.com/pulumi/pulumi/sdk/v2/go/common/util/contract"
)
Expand Down Expand Up @@ -111,7 +112,7 @@ func main() {
writeNodeJSClient(pkg, outdir, templateDir)
case Python:
templateDir := path.Join(TemplateDir, "python-templates")
writePythonClient(data, outdir, templateDir)
writePythonClient(pkg, outdir, templateDir)
case DotNet:
templateDir := path.Join(TemplateDir, "dotnet-templates")
writeDotnetClient(pkg, data, outdir, templateDir)
Expand Down Expand Up @@ -173,67 +174,38 @@ func writeNodeJSClient(pkg *schema.Package, outdir, templateDir string) {
mustWriteFiles(outdir, files)
}

func writePythonClient(data map[string]interface{}, outdir, templateDir string) {
sdkDir := filepath.Join(outdir, "pulumi_kubernetes")

err := gen.PythonClient(data, templateDir,
func(initPy string) error {
return ioutil.WriteFile(filepath.Join(sdkDir, "__init__.py"), []byte(initPy), 0777)
},
func(group, initPy string) error {
destDir := filepath.Join(sdkDir, group)

err := os.MkdirAll(destDir, 0700)
if err != nil {
return err
}
return ioutil.WriteFile(filepath.Join(destDir, "__init__.py"), []byte(initPy), 0777)
},
func(crBytes string) error {
destDir := filepath.Join(sdkDir, "apiextensions")

err := os.MkdirAll(destDir, 0700)
if err != nil {
return err
}

return ioutil.WriteFile(filepath.Join(destDir, "CustomResource.py"), []byte(crBytes), 0777)
},
func(group, version, initPy string) error {
destDir := filepath.Join(sdkDir, group, version)

err := os.MkdirAll(destDir, 0700)
if err != nil {
return err
}

return ioutil.WriteFile(filepath.Join(destDir, "__init__.py"), []byte(initPy), 0777)
},
func(group, version, kind, kindPy string) error {
destDir := filepath.Join(sdkDir, group, version, fmt.Sprintf("%s.py", kind))
return ioutil.WriteFile(destDir, []byte(kindPy), 0777)
},
func(casingPy string) error {
destDir := filepath.Join(sdkDir, "tables.py")
return ioutil.WriteFile(destDir, []byte(casingPy), 0777)
},
func(yamlPy string) error {
destDir := filepath.Join(sdkDir, "yaml.py")
return ioutil.WriteFile(destDir, []byte(yamlPy), 0777)
})
func writePythonClient(pkg *schema.Package, outdir string, templateDir string) {
resources, err := pythongen.LanguageResources("pulumigen", pkg)
if err != nil {
panic(err)
}

err = CopyDir(filepath.Join(templateDir, "helm"), filepath.Join(sdkDir, "helm"))
if err != nil {
panic(err)
templateResources := gen.TemplateResources{}
for _, resource := range resources {
r := gen.TemplateResource{
Name: resource.Name,
Package: resource.Package,
Token: resource.Token,
}
templateResources.Resources = append(templateResources.Resources, r)
}
sort.Slice(templateResources.Resources, func(i, j int) bool {
return templateResources.Resources[i].Token < templateResources.Resources[j].Token
})

overlays := map[string][]byte{
"apiextensions/CustomResource.py": mustLoadFile(filepath.Join(templateDir, "apiextensions", "CustomResource.py")),
"helm/v2/helm.py": mustLoadFile(filepath.Join(templateDir, "helm", "v2", "helm.py")),
"helm/v3/helm.py": mustLoadFile(filepath.Join(templateDir, "helm", "v2", "helm.py")), // v3 support is currently identical to v2
"yaml.py": mustRenderTemplate(filepath.Join(templateDir, "yaml", "yaml.tmpl"), templateResources),
}

err = CopyFile(filepath.Join(templateDir, "README.md"), filepath.Join(sdkDir, "README.md"))
files, err := pythongen.GeneratePackage("pulumigen", pkg, overlays)
if err != nil {
panic(err)
}

mustWriteFiles(outdir, files)
}

func writeDotnetClient(pkg *schema.Package, data map[string]interface{}, outdir, templateDir string) {
Expand Down
4 changes: 2 additions & 2 deletions provider/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ require (
github.com/imdario/mergo v0.3.8
github.com/mitchellh/go-wordwrap v1.0.0
github.com/pkg/errors v0.9.1
github.com/pulumi/pulumi/pkg/v2 v2.4.1-0.20200622153820-282c95ee402d
github.com/pulumi/pulumi/sdk/v2 v2.3.0
github.com/pulumi/pulumi/pkg/v2 v2.5.1-0.20200626160536-3eacf8bf90c0
github.com/pulumi/pulumi/sdk/v2 v2.4.0
github.com/stretchr/testify v1.6.1
google.golang.org/grpc v1.28.0
k8s.io/api v0.18.0
Expand Down
8 changes: 4 additions & 4 deletions provider/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -450,11 +450,11 @@ github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
github.com/pulumi/pulumi/pkg/v2 v2.4.1-0.20200622153820-282c95ee402d h1:a7+mvsLerdMp/tz1MKYYsAKTtjWPGz9sNzD+UscQRuU=
github.com/pulumi/pulumi/pkg/v2 v2.4.1-0.20200622153820-282c95ee402d/go.mod h1:zfUm4/GH2dVRlHZ3Yeb9bRweCQM7icVBdplu6MUDRrQ=
github.com/pulumi/pulumi/pkg/v2 v2.5.1-0.20200626160536-3eacf8bf90c0 h1:TgfCBRjAOpkKBplKbdevj0Sj6uAI7imjC0xqai5DS9A=
github.com/pulumi/pulumi/pkg/v2 v2.5.1-0.20200626160536-3eacf8bf90c0/go.mod h1:zfUm4/GH2dVRlHZ3Yeb9bRweCQM7icVBdplu6MUDRrQ=
github.com/pulumi/pulumi/sdk/v2 v2.0.0/go.mod h1:W7k1UDYerc5o97mHnlHHp5iQZKEby+oQrQefWt+2RF4=
github.com/pulumi/pulumi/sdk/v2 v2.3.0 h1:uvRYCmoHILKlyyIbXa5CcLSKKt9n2s8j+GKTffpXQf4=
github.com/pulumi/pulumi/sdk/v2 v2.3.0/go.mod h1:cvivzHVRA5Xu3NSE/obmHzO3L693IJSd5QccQuBOMUE=
github.com/pulumi/pulumi/sdk/v2 v2.4.0 h1:1ef6JbCWG3RWCKNpeeFBezzI6HBdMPpdeZQAd+IGKvw=
github.com/pulumi/pulumi/sdk/v2 v2.4.0/go.mod h1:llk6tmXss8kJrt3vEXAkwiwgZOuINEFmKIfMveVIwO8=
github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M=
github.com/rjeczalik/notify v0.9.2/go.mod h1:aErll2f0sUX9PXZnVNyeiObbmTlk5jnMoCa4QEjJeqM=
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
Expand Down
14 changes: 0 additions & 14 deletions provider/pkg/gen/python-templates/README.md

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
import pulumi.runtime
from pulumi import ResourceOptions

from .. import tables, version
from .. import tables
from ..utilities import get_version


class CustomResource(pulumi.CustomResource):
Expand Down Expand Up @@ -53,7 +54,7 @@ def __init__(self, resource_name, api_version, kind, spec=None, metadata=None, o
__props__['spec'] = spec
__props__['metadata'] = metadata

opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(version=version.get_version()))
opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(version=get_version()))

super(CustomResource, self).__init__(
f"kubernetes:{api_version}:{kind}",
Expand Down Expand Up @@ -86,7 +87,7 @@ def get(resource_name, api_version, kind, id, opts=None):
return CustomResource(resource_name=resource_name, api_version=api_version, kind=kind, opts=opts)

def translate_output_property(self, prop: str) -> str:
return tables._CASING_FORWARD_TABLE.get(prop) or prop
return tables._CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop

def translate_input_property(self, prop: str) -> str:
return tables._CASING_BACKWARD_TABLE.get(prop) or prop
return tables._SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop
13 changes: 0 additions & 13 deletions provider/pkg/gen/python-templates/casing.py.mustache

This file was deleted.

10 changes: 0 additions & 10 deletions provider/pkg/gen/python-templates/group__init__.py.mustache

This file was deleted.

9 changes: 0 additions & 9 deletions provider/pkg/gen/python-templates/helm/__init__.py

This file was deleted.

6 changes: 0 additions & 6 deletions provider/pkg/gen/python-templates/helm/v2/__init__.py

This file was deleted.

4 changes: 2 additions & 2 deletions provider/pkg/gen/python-templates/helm/v2/helm.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from typing import Any, Callable, List, Optional, TextIO, Tuple, Union

import pulumi.runtime
from ...version import get_version
from ...utilities import get_version
from pulumi_kubernetes.yaml import _parse_yaml_document


Expand Down Expand Up @@ -283,7 +283,7 @@ def _run_helm_cmd(all_config: Tuple[List[Union[str, bytes]], Any]) -> str:
def _is_helm_v3() -> bool:

cmd: List[str] = ['helm', 'version', '--short']

"""
Helm v2 returns version like this:
Client: v2.16.7+g5f2584f
Expand Down
6 changes: 0 additions & 6 deletions provider/pkg/gen/python-templates/helm/v3/__init__.py

This file was deleted.

132 changes: 0 additions & 132 deletions provider/pkg/gen/python-templates/kind.py.mustache

This file was deleted.

Loading

0 comments on commit 6345139

Please sign in to comment.