Skip to content

Commit

Permalink
Don't require values for helm.Release (#1761)
Browse files Browse the repository at this point in the history
  • Loading branch information
lblackstone committed Oct 8, 2021
1 parent ff43b7c commit 4e8bd49
Show file tree
Hide file tree
Showing 9 changed files with 26 additions and 39 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
## HEAD (Unreleased)

- Fix error for helm.Release previews with computed values (https://github.com/pulumi/pulumi-kubernetes/pull/1760)
- Don't require values for helm.Release (https://github.com/pulumi/pulumi-kubernetes/pull/1761)

## 3.8.0 (October 6, 2021)

Expand Down
4 changes: 1 addition & 3 deletions provider/cmd/pulumi-resource-kubernetes/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -39597,7 +39597,6 @@
"required": [
"chart",
"repositoryOpts",
"values",
"status"
],
"language": {
Expand Down Expand Up @@ -39794,8 +39793,7 @@
},
"requiredInputs": [
"chart",
"repositoryOpts",
"values"
"repositoryOpts"
]
},
"kubernetes:meta/v1:Status": {
Expand Down
2 changes: 0 additions & 2 deletions provider/pkg/gen/overlays.go
Original file line number Diff line number Diff line change
Expand Up @@ -758,7 +758,6 @@ var helmV3ReleaseResource = pschema.ResourceSpec{
Required: []string{
"chart",
"repositoryOpts",
"values",
"status",
},
Language: map[string]pschema.RawMessage{
Expand Down Expand Up @@ -1026,7 +1025,6 @@ var helmV3ReleaseResource = pschema.ResourceSpec{
RequiredInputs: []string{
"chart",
"repositoryOpts",
"values",
},
}

Expand Down
12 changes: 5 additions & 7 deletions provider/pkg/provider/helm_release.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,19 @@ import (
"strings"
"time"

"k8s.io/client-go/tools/clientcmd/api"

jsonpatch "github.com/evanphx/json-patch"
"github.com/golang/protobuf/ptypes/empty"
pbempty "github.com/golang/protobuf/ptypes/empty"
"github.com/mitchellh/mapstructure"
pkgerrors "github.com/pkg/errors"
"github.com/pulumi/pulumi-kubernetes/provider/v3/pkg/metadata"
"github.com/pulumi/pulumi/pkg/v3/resource/provider"
"github.com/pulumi/pulumi/sdk/v3/go/common/diag"
logger "github.com/pulumi/pulumi/sdk/v3/go/common/util/logging"

"github.com/golang/protobuf/ptypes/empty"
"github.com/mitchellh/mapstructure"
"github.com/pulumi/pulumi-kubernetes/provider/v3/pkg/metadata"
"github.com/pulumi/pulumi/sdk/v3/go/common/resource"
"github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin"
"github.com/pulumi/pulumi/sdk/v3/go/common/tokens"
"github.com/pulumi/pulumi/sdk/v3/go/common/util/contract"
logger "github.com/pulumi/pulumi/sdk/v3/go/common/util/logging"
pulumirpc "github.com/pulumi/pulumi/sdk/v3/proto/go"
"gopkg.in/yaml.v3"
"helm.sh/helm/v3/pkg/action"
Expand All @@ -41,6 +38,7 @@ import (
"helm.sh/helm/v3/pkg/release"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/client-go/tools/clientcmd/api"
)

// Default timeout for awaited install and uninstall operations
Expand Down
2 changes: 1 addition & 1 deletion sdk/dotnet/Helm/V3/Release.cs
Original file line number Diff line number Diff line change
Expand Up @@ -475,7 +475,7 @@ public InputList<AssetOrArchive> ValueYamlFiles
set => _valueYamlFiles = value;
}

[Input("values", required: true)]
[Input("values")]
private InputMap<object>? _values;

/// <summary>
Expand Down
3 changes: 0 additions & 3 deletions sdk/go/kubernetes/helm/v3/release.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,6 @@ func NewRelease(ctx *pulumi.Context,
if args.RepositoryOpts == nil {
return nil, errors.New("invalid value for required argument 'RepositoryOpts'")
}
if args.Values == nil {
return nil, errors.New("invalid value for required argument 'Values'")
}
args.Compat = pulumi.StringPtr("true")
var resource Release
err := ctx.RegisterResource("kubernetes:helm.sh/v3:Release", name, args, &resource, opts...)
Expand Down
5 changes: 1 addition & 4 deletions sdk/nodejs/helm/v3/release.ts
Original file line number Diff line number Diff line change
Expand Up @@ -191,9 +191,6 @@ export class Release extends pulumi.CustomResource {
if ((!args || args.repositoryOpts === undefined) && !opts.urn) {
throw new Error("Missing required property 'repositoryOpts'");
}
if ((!args || args.values === undefined) && !opts.urn) {
throw new Error("Missing required property 'values'");
}
inputs["atomic"] = args ? args.atomic : undefined;
inputs["chart"] = args ? args.chart : undefined;
inputs["cleanupOnFail"] = args ? args.cleanupOnFail : undefined;
Expand Down Expand Up @@ -396,7 +393,7 @@ export interface ReleaseArgs {
/**
* Custom values set for the release.
*/
values: pulumi.Input<{[key: string]: any}>;
values?: pulumi.Input<{[key: string]: any}>;
/**
* Verify the package before installing it.
*/
Expand Down
35 changes: 17 additions & 18 deletions sdk/python/pulumi_kubernetes/helm/v3/Release.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ class ReleaseArgs:
def __init__(__self__, *,
chart: pulumi.Input[str],
repository_opts: pulumi.Input['RepositoryOptsArgs'],
values: pulumi.Input[Mapping[str, Any]],
atomic: Optional[pulumi.Input[bool]] = None,
cleanup_on_fail: Optional[pulumi.Input[bool]] = None,
compat: Optional[pulumi.Input[str]] = None,
Expand Down Expand Up @@ -46,14 +45,14 @@ def __init__(__self__, *,
skip_crds: Optional[pulumi.Input[bool]] = None,
timeout: Optional[pulumi.Input[int]] = None,
value_yaml_files: Optional[pulumi.Input[Sequence[pulumi.Input[Union[pulumi.Asset, pulumi.Archive]]]]] = None,
values: Optional[pulumi.Input[Mapping[str, Any]]] = None,
verify: Optional[pulumi.Input[bool]] = None,
version: Optional[pulumi.Input[str]] = None,
wait_for_jobs: Optional[pulumi.Input[bool]] = None):
"""
The set of arguments for constructing a Release resource.
:param pulumi.Input[str] chart: Chart name to be installed. A path may be used.
:param pulumi.Input['RepositoryOptsArgs'] repository_opts: Specification defining the Helm chart repository to use.
:param pulumi.Input[Mapping[str, Any]] values: Custom values set for the release.
:param pulumi.Input[bool] atomic: If set, installation process purges chart on fail. `skipAwait` will be disabled automatically if atomic is used.
:param pulumi.Input[bool] cleanup_on_fail: Allow deletion of new resources created in this upgrade when upgrade fails.
:param pulumi.Input[bool] create_namespace: Create the namespace if it does not exist.
Expand Down Expand Up @@ -81,13 +80,13 @@ def __init__(__self__, *,
:param pulumi.Input[bool] skip_crds: If set, no CRDs will be installed. By default, CRDs are installed if not already present.
:param pulumi.Input[int] timeout: Time in seconds to wait for any individual kubernetes operation.
:param pulumi.Input[Sequence[pulumi.Input[Union[pulumi.Asset, pulumi.Archive]]]] value_yaml_files: List of assets (raw yaml files). Content is read and merged with values. Not yet supported.
:param pulumi.Input[Mapping[str, Any]] values: Custom values set for the release.
:param pulumi.Input[bool] verify: Verify the package before installing it.
:param pulumi.Input[str] version: Specify the exact chart version to install. If this is not specified, the latest version is installed.
:param pulumi.Input[bool] wait_for_jobs: Will wait until all Jobs have been completed before marking the release as successful. This is ignored if `skipAwait` is enabled.
"""
pulumi.set(__self__, "chart", chart)
pulumi.set(__self__, "repository_opts", repository_opts)
pulumi.set(__self__, "values", values)
if atomic is not None:
pulumi.set(__self__, "atomic", atomic)
if cleanup_on_fail is not None:
Expand Down Expand Up @@ -144,6 +143,8 @@ def __init__(__self__, *,
pulumi.set(__self__, "timeout", timeout)
if value_yaml_files is not None:
pulumi.set(__self__, "value_yaml_files", value_yaml_files)
if values is not None:
pulumi.set(__self__, "values", values)
if verify is not None:
pulumi.set(__self__, "verify", verify)
if version is not None:
Expand Down Expand Up @@ -175,18 +176,6 @@ def repository_opts(self) -> pulumi.Input['RepositoryOptsArgs']:
def repository_opts(self, value: pulumi.Input['RepositoryOptsArgs']):
pulumi.set(self, "repository_opts", value)

@property
@pulumi.getter
def values(self) -> pulumi.Input[Mapping[str, Any]]:
"""
Custom values set for the release.
"""
return pulumi.get(self, "values")

@values.setter
def values(self, value: pulumi.Input[Mapping[str, Any]]):
pulumi.set(self, "values", value)

@property
@pulumi.getter
def atomic(self) -> Optional[pulumi.Input[bool]]:
Expand Down Expand Up @@ -520,6 +509,18 @@ def value_yaml_files(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[Union[
def value_yaml_files(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[Union[pulumi.Asset, pulumi.Archive]]]]]):
pulumi.set(self, "value_yaml_files", value)

@property
@pulumi.getter
def values(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
"""
Custom values set for the release.
"""
return pulumi.get(self, "values")

@values.setter
def values(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
pulumi.set(self, "values", value)

@property
@pulumi.getter
def verify(self) -> Optional[pulumi.Input[bool]]:
Expand Down Expand Up @@ -744,8 +745,6 @@ def _internal_init(__self__,
__props__.__dict__["skip_crds"] = skip_crds
__props__.__dict__["timeout"] = timeout
__props__.__dict__["value_yaml_files"] = value_yaml_files
if values is None and not opts.urn:
raise TypeError("Missing required property 'values'")
__props__.__dict__["values"] = values
__props__.__dict__["verify"] = verify
__props__.__dict__["version"] = version
Expand Down Expand Up @@ -1051,7 +1050,7 @@ def value_yaml_files(self) -> pulumi.Output[Optional[Sequence[Union[pulumi.Asset

@property
@pulumi.getter
def values(self) -> pulumi.Output[Mapping[str, Any]]:
def values(self) -> pulumi.Output[Optional[Mapping[str, Any]]]:
"""
Custom values set for the release.
"""
Expand Down
1 change: 0 additions & 1 deletion tests/sdk/nodejs/examples/helm-release-namespace/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ const alertManager = new k8s.helm.v3.Release("alertmanager", {
repositoryOpts: {
repo: "https://prometheus-community.github.io/helm-charts",
},
values: {},
});

// Ensure we get the expected namespace for the stateful set.
Expand Down

0 comments on commit 4e8bd49

Please sign in to comment.