diff --git a/sdk/python/pulumiverse_doppler/_utilities.py b/sdk/python/pulumiverse_doppler/_utilities.py index b7a29b8..e1b3372 100644 --- a/sdk/python/pulumiverse_doppler/_utilities.py +++ b/sdk/python/pulumiverse_doppler/_utilities.py @@ -4,6 +4,7 @@ import asyncio +import functools import importlib.metadata import importlib.util import inspect @@ -11,14 +12,19 @@ import os import sys import typing +import warnings +import base64 import pulumi import pulumi.runtime from pulumi.runtime.sync_await import _sync_await +from pulumi.runtime.proto import resource_pb2 from semver import VersionInfo as SemverVersion from parver import Version as PEP440Version +C = typing.TypeVar("C", bound=typing.Callable) + def get_env(*args): for v in args: @@ -96,10 +102,6 @@ def _get_semver_version(): _version = _get_semver_version() _version_str = str(_version) - -def get_version(): - return _version_str - def get_resource_opts_defaults() -> pulumi.ResourceOptions: return pulumi.ResourceOptions( version=get_version(), @@ -287,5 +289,39 @@ async def _await_output(o: pulumi.Output[typing.Any]) -> typing.Tuple[object, bo await o._resources, ) + +# This is included to provide an upgrade path for users who are using a version +# of the Pulumi SDK (<3.121.0) that does not include the `deprecated` decorator. +def deprecated(message: str) -> typing.Callable[[C], C]: + """ + Decorator to indicate a function is deprecated. + + As well as inserting appropriate statements to indicate that the function is + deprecated, this decorator also tags the function with a special attribute + so that Pulumi code can detect that it is deprecated and react appropriately + in certain situations. + + message is the deprecation message that should be printed if the function is called. + """ + + def decorator(fn: C) -> C: + if not callable(fn): + raise TypeError("Expected fn to be callable") + + @functools.wraps(fn) + def deprecated_fn(*args, **kwargs): + warnings.warn(message) + pulumi.warn(f"{fn.__name__} is deprecated: {message}") + + return fn(*args, **kwargs) + + deprecated_fn.__dict__["_pulumi_deprecated_callable"] = fn + return typing.cast(C, deprecated_fn) + + return decorator + def get_plugin_download_url(): return "github://api.github.com/pulumiverse" + +def get_version(): + return _version_str diff --git a/sdk/python/pulumiverse_doppler/integration/aws_parameter_store.py b/sdk/python/pulumiverse_doppler/integration/aws_parameter_store.py index 3615329..6966667 100644 --- a/sdk/python/pulumiverse_doppler/integration/aws_parameter_store.py +++ b/sdk/python/pulumiverse_doppler/integration/aws_parameter_store.py @@ -125,12 +125,12 @@ def __init__(__self__, }, }], }), - inline_policies=[aws.iam.RoleInlinePolicyArgs( - name="doppler_secret_manager", - policy=json.dumps({ - "Version": "2012-10-17", - "Statement": [{ - "Action": [ + inline_policies=[{ + "name": "doppler_secret_manager", + "policy": json.dumps({ + "version": "2012-10-17", + "statement": [{ + "action": [ "ssm:PutParameter", "ssm:LabelParameterVersion", "ssm:DeleteParameter", @@ -142,11 +142,11 @@ def __init__(__self__, "ssm:GetParameter", "ssm:DeleteParameters", ], - "Effect": "Allow", - "Resource": "*", + "effect": "Allow", + "resource": "*", }], }), - )]) + }]) prod = doppler.integration.AwsParameterStore("prod", name="Production", assume_role_arn=doppler_parameter_store.arn) @@ -201,12 +201,12 @@ def __init__(__self__, }, }], }), - inline_policies=[aws.iam.RoleInlinePolicyArgs( - name="doppler_secret_manager", - policy=json.dumps({ - "Version": "2012-10-17", - "Statement": [{ - "Action": [ + inline_policies=[{ + "name": "doppler_secret_manager", + "policy": json.dumps({ + "version": "2012-10-17", + "statement": [{ + "action": [ "ssm:PutParameter", "ssm:LabelParameterVersion", "ssm:DeleteParameter", @@ -218,11 +218,11 @@ def __init__(__self__, "ssm:GetParameter", "ssm:DeleteParameters", ], - "Effect": "Allow", - "Resource": "*", + "effect": "Allow", + "resource": "*", }], }), - )]) + }]) prod = doppler.integration.AwsParameterStore("prod", name="Production", assume_role_arn=doppler_parameter_store.arn) diff --git a/sdk/python/pulumiverse_doppler/integration/aws_secrets_manager.py b/sdk/python/pulumiverse_doppler/integration/aws_secrets_manager.py index 74cdd74..a01b4b0 100644 --- a/sdk/python/pulumiverse_doppler/integration/aws_secrets_manager.py +++ b/sdk/python/pulumiverse_doppler/integration/aws_secrets_manager.py @@ -125,12 +125,12 @@ def __init__(__self__, }, }], }), - inline_policies=[aws.iam.RoleInlinePolicyArgs( - name="doppler_secret_manager", - policy=json.dumps({ - "Version": "2012-10-17", - "Statement": [{ - "Action": [ + inline_policies=[{ + "name": "doppler_secret_manager", + "policy": json.dumps({ + "version": "2012-10-17", + "statement": [{ + "action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:PutSecretValue", @@ -139,11 +139,11 @@ def __init__(__self__, "secretsmanager:TagResource", "secretsmanager:UpdateSecret", ], - "Effect": "Allow", - "Resource": "*", + "effect": "Allow", + "resource": "*", }], }), - )]) + }]) prod = doppler.integration.AwsSecretsManager("prod", name="Production", assume_role_arn=doppler_secrets_manager.arn) @@ -197,12 +197,12 @@ def __init__(__self__, }, }], }), - inline_policies=[aws.iam.RoleInlinePolicyArgs( - name="doppler_secret_manager", - policy=json.dumps({ - "Version": "2012-10-17", - "Statement": [{ - "Action": [ + inline_policies=[{ + "name": "doppler_secret_manager", + "policy": json.dumps({ + "version": "2012-10-17", + "statement": [{ + "action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:PutSecretValue", @@ -211,11 +211,11 @@ def __init__(__self__, "secretsmanager:TagResource", "secretsmanager:UpdateSecret", ], - "Effect": "Allow", - "Resource": "*", + "effect": "Allow", + "resource": "*", }], }), - )]) + }]) prod = doppler.integration.AwsSecretsManager("prod", name="Production", assume_role_arn=doppler_secrets_manager.arn) diff --git a/sdk/python/pulumiverse_doppler/secretssync/aws_parameter_store.py b/sdk/python/pulumiverse_doppler/secretssync/aws_parameter_store.py index 7387226..c13ccf7 100644 --- a/sdk/python/pulumiverse_doppler/secretssync/aws_parameter_store.py +++ b/sdk/python/pulumiverse_doppler/secretssync/aws_parameter_store.py @@ -287,12 +287,12 @@ def __init__(__self__, }, }], }), - inline_policies=[aws.iam.RoleInlinePolicyArgs( - name="doppler_secret_manager", - policy=json.dumps({ - "Version": "2012-10-17", - "Statement": [{ - "Action": [ + inline_policies=[{ + "name": "doppler_secret_manager", + "policy": json.dumps({ + "version": "2012-10-17", + "statement": [{ + "action": [ "ssm:PutParameter", "ssm:LabelParameterVersion", "ssm:DeleteParameter", @@ -304,11 +304,11 @@ def __init__(__self__, "ssm:GetParameter", "ssm:DeleteParameters", ], - "Effect": "Allow", - "Resource": "*", + "effect": "Allow", + "resource": "*", }], }), - )]) + }]) prod = doppler.integration.AwsParameterStore("prod", name="Production", assume_role_arn=doppler_parameter_store.arn) @@ -368,12 +368,12 @@ def __init__(__self__, }, }], }), - inline_policies=[aws.iam.RoleInlinePolicyArgs( - name="doppler_secret_manager", - policy=json.dumps({ - "Version": "2012-10-17", - "Statement": [{ - "Action": [ + inline_policies=[{ + "name": "doppler_secret_manager", + "policy": json.dumps({ + "version": "2012-10-17", + "statement": [{ + "action": [ "ssm:PutParameter", "ssm:LabelParameterVersion", "ssm:DeleteParameter", @@ -385,11 +385,11 @@ def __init__(__self__, "ssm:GetParameter", "ssm:DeleteParameters", ], - "Effect": "Allow", - "Resource": "*", + "effect": "Allow", + "resource": "*", }], }), - )]) + }]) prod = doppler.integration.AwsParameterStore("prod", name="Production", assume_role_arn=doppler_parameter_store.arn) diff --git a/sdk/python/pulumiverse_doppler/secretssync/aws_secrets_manager.py b/sdk/python/pulumiverse_doppler/secretssync/aws_secrets_manager.py index b0e3a8d..f6ebf22 100644 --- a/sdk/python/pulumiverse_doppler/secretssync/aws_secrets_manager.py +++ b/sdk/python/pulumiverse_doppler/secretssync/aws_secrets_manager.py @@ -254,12 +254,12 @@ def __init__(__self__, }, }], }), - inline_policies=[aws.iam.RoleInlinePolicyArgs( - name="doppler_secret_manager", - policy=json.dumps({ - "Version": "2012-10-17", - "Statement": [{ - "Action": [ + inline_policies=[{ + "name": "doppler_secret_manager", + "policy": json.dumps({ + "version": "2012-10-17", + "statement": [{ + "action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:PutSecretValue", @@ -268,11 +268,11 @@ def __init__(__self__, "secretsmanager:TagResource", "secretsmanager:UpdateSecret", ], - "Effect": "Allow", - "Resource": "*", + "effect": "Allow", + "resource": "*", }], }), - )]) + }]) prod = doppler.integration.AwsSecretsManager("prod", name="Production", assume_role_arn=doppler_secrets_manager.arn) @@ -330,12 +330,12 @@ def __init__(__self__, }, }], }), - inline_policies=[aws.iam.RoleInlinePolicyArgs( - name="doppler_secret_manager", - policy=json.dumps({ - "Version": "2012-10-17", - "Statement": [{ - "Action": [ + inline_policies=[{ + "name": "doppler_secret_manager", + "policy": json.dumps({ + "version": "2012-10-17", + "statement": [{ + "action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:PutSecretValue", @@ -344,11 +344,11 @@ def __init__(__self__, "secretsmanager:TagResource", "secretsmanager:UpdateSecret", ], - "Effect": "Allow", - "Resource": "*", + "effect": "Allow", + "resource": "*", }], }), - )]) + }]) prod = doppler.integration.AwsSecretsManager("prod", name="Production", assume_role_arn=doppler_secrets_manager.arn)