pulumi-pulumiservice 0.30.0a1753883224__tar.gz → 0.31.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/PKG-INFO +1 -1
  2. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/__init__.py +2 -0
  3. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/_enums.py +40 -0
  4. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/_inputs.py +235 -0
  5. pulumi_pulumiservice-0.31.0/pulumi_pulumiservice/approval_rule.py +248 -0
  6. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/outputs.py +179 -0
  7. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/pulumi-plugin.json +1 -1
  8. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice.egg-info/PKG-INFO +1 -1
  9. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice.egg-info/SOURCES.txt +1 -0
  10. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pyproject.toml +1 -1
  11. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/README.md +0 -0
  12. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/_utilities.py +0 -0
  13. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/access_token.py +0 -0
  14. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/agent_pool.py +0 -0
  15. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/config/__init__.py +0 -0
  16. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/config/__init__.pyi +0 -0
  17. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/config/vars.py +0 -0
  18. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/deployment_schedule.py +0 -0
  19. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/deployment_settings.py +0 -0
  20. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/drift_schedule.py +0 -0
  21. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/environment.py +0 -0
  22. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/environment_rotation_schedule.py +0 -0
  23. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/environment_version_tag.py +0 -0
  24. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/oidc_issuer.py +0 -0
  25. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/org_access_token.py +0 -0
  26. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/provider.py +0 -0
  27. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/py.typed +0 -0
  28. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/stack.py +0 -0
  29. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/stack_tag.py +0 -0
  30. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/team.py +0 -0
  31. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/team_access_token.py +0 -0
  32. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/team_environment_permission.py +0 -0
  33. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/team_stack_permission.py +0 -0
  34. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/template_source.py +0 -0
  35. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/ttl_schedule.py +0 -0
  36. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice/webhook.py +0 -0
  37. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice.egg-info/dependency_links.txt +0 -0
  38. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice.egg-info/requires.txt +0 -0
  39. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/pulumi_pulumiservice.egg-info/top_level.txt +0 -0
  40. {pulumi_pulumiservice-0.30.0a1753883224 → pulumi_pulumiservice-0.31.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulumi_pulumiservice
3
- Version: 0.30.0a1753883224
3
+ Version: 0.31.0
4
4
  Summary: A native Pulumi package for creating and managing Pulumi Cloud constructs
5
5
  License: Apache-2.0
6
6
  Project-URL: Homepage, https://pulumi.com
@@ -8,6 +8,7 @@ import typing
8
8
  from ._enums import *
9
9
  from .access_token import *
10
10
  from .agent_pool import *
11
+ from .approval_rule import *
11
12
  from .deployment_schedule import *
12
13
  from .deployment_settings import *
13
14
  from .drift_schedule import *
@@ -46,6 +47,7 @@ _utilities.register(
46
47
  "classes": {
47
48
  "pulumiservice:index:AccessToken": "AccessToken",
48
49
  "pulumiservice:index:AgentPool": "AgentPool",
50
+ "pulumiservice:index:ApprovalRule": "ApprovalRule",
49
51
  "pulumiservice:index:DeploymentSchedule": "DeploymentSchedule",
50
52
  "pulumiservice:index:DeploymentSettings": "DeploymentSettings",
51
53
  "pulumiservice:index:DriftSchedule": "DriftSchedule",
@@ -10,6 +10,8 @@ __all__ = [
10
10
  'AuthPolicyTokenType',
11
11
  'EnvironmentPermission',
12
12
  'PulumiOperation',
13
+ 'RbacPermission',
14
+ 'TargetActionType',
13
15
  'TeamStackPermissionScope',
14
16
  'WebhookFilters',
15
17
  'WebhookFormat',
@@ -100,6 +102,44 @@ class PulumiOperation(str, Enum):
100
102
  """
101
103
 
102
104
 
105
+ class RbacPermission(str, Enum):
106
+ READ = "environment:read"
107
+ """
108
+ Read permission.
109
+ """
110
+ READ_DECRYPT = "environment:read_decrypt"
111
+ """
112
+ Read and decrypt permission.
113
+ """
114
+ OPEN = "environment:open"
115
+ """
116
+ Open permission.
117
+ """
118
+ WRITE = "environment:write"
119
+ """
120
+ Write permission.
121
+ """
122
+ DELETE = "environment:delete"
123
+ """
124
+ Delete permission.
125
+ """
126
+ CLONE = "environment:clone"
127
+ """
128
+ Clone permission.
129
+ """
130
+ ROTATE = "environment:rotate"
131
+ """
132
+ Rotate permission.
133
+ """
134
+
135
+
136
+ class TargetActionType(str, Enum):
137
+ UPDATE = "update"
138
+ """
139
+ Update action type for approval rules.
140
+ """
141
+
142
+
103
143
  class TeamStackPermissionScope(float, Enum):
104
144
  READ = 101
105
145
  """
@@ -18,6 +18,8 @@ from ._enums import *
18
18
  __all__ = [
19
19
  'AWSOIDCConfigurationArgs',
20
20
  'AWSOIDCConfigurationArgsDict',
21
+ 'ApprovalRuleConfigArgs',
22
+ 'ApprovalRuleConfigArgsDict',
21
23
  'AuthPolicyDefinitionArgs',
22
24
  'AuthPolicyDefinitionArgsDict',
23
25
  'AzureOIDCConfigurationArgs',
@@ -40,6 +42,10 @@ __all__ = [
40
42
  'DeploymentSettingsOperationContextArgsDict',
41
43
  'DeploymentSettingsSourceContextArgs',
42
44
  'DeploymentSettingsSourceContextArgsDict',
45
+ 'EligibleApproverArgs',
46
+ 'EligibleApproverArgsDict',
47
+ 'EnvironmentIdentifierArgs',
48
+ 'EnvironmentIdentifierArgsDict',
43
49
  'GCPOIDCConfigurationArgs',
44
50
  'GCPOIDCConfigurationArgsDict',
45
51
  'OperationContextOIDCArgs',
@@ -142,6 +148,94 @@ class AWSOIDCConfigurationArgs:
142
148
  pulumi.set(self, "policy_arns", value)
143
149
 
144
150
 
151
+ if not MYPY:
152
+ class ApprovalRuleConfigArgsDict(TypedDict):
153
+ allow_self_approval: pulumi.Input[bool]
154
+ """
155
+ Whether self-approval is allowed.
156
+ """
157
+ eligible_approvers: pulumi.Input[Sequence[pulumi.Input['EligibleApproverArgsDict']]]
158
+ """
159
+ List of eligible approvers.
160
+ """
161
+ num_approvals_required: pulumi.Input[int]
162
+ """
163
+ Number of approvals required.
164
+ """
165
+ require_reapproval_on_change: pulumi.Input[bool]
166
+ """
167
+ Whether reapproval is required on changes.
168
+ """
169
+ elif False:
170
+ ApprovalRuleConfigArgsDict: TypeAlias = Mapping[str, Any]
171
+
172
+ @pulumi.input_type
173
+ class ApprovalRuleConfigArgs:
174
+ def __init__(__self__, *,
175
+ allow_self_approval: pulumi.Input[bool],
176
+ eligible_approvers: pulumi.Input[Sequence[pulumi.Input['EligibleApproverArgs']]],
177
+ num_approvals_required: pulumi.Input[int],
178
+ require_reapproval_on_change: pulumi.Input[bool]):
179
+ """
180
+ :param pulumi.Input[bool] allow_self_approval: Whether self-approval is allowed.
181
+ :param pulumi.Input[Sequence[pulumi.Input['EligibleApproverArgs']]] eligible_approvers: List of eligible approvers.
182
+ :param pulumi.Input[int] num_approvals_required: Number of approvals required.
183
+ :param pulumi.Input[bool] require_reapproval_on_change: Whether reapproval is required on changes.
184
+ """
185
+ pulumi.set(__self__, "allow_self_approval", allow_self_approval)
186
+ pulumi.set(__self__, "eligible_approvers", eligible_approvers)
187
+ pulumi.set(__self__, "num_approvals_required", num_approvals_required)
188
+ pulumi.set(__self__, "require_reapproval_on_change", require_reapproval_on_change)
189
+
190
+ @property
191
+ @pulumi.getter(name="allowSelfApproval")
192
+ def allow_self_approval(self) -> pulumi.Input[bool]:
193
+ """
194
+ Whether self-approval is allowed.
195
+ """
196
+ return pulumi.get(self, "allow_self_approval")
197
+
198
+ @allow_self_approval.setter
199
+ def allow_self_approval(self, value: pulumi.Input[bool]):
200
+ pulumi.set(self, "allow_self_approval", value)
201
+
202
+ @property
203
+ @pulumi.getter(name="eligibleApprovers")
204
+ def eligible_approvers(self) -> pulumi.Input[Sequence[pulumi.Input['EligibleApproverArgs']]]:
205
+ """
206
+ List of eligible approvers.
207
+ """
208
+ return pulumi.get(self, "eligible_approvers")
209
+
210
+ @eligible_approvers.setter
211
+ def eligible_approvers(self, value: pulumi.Input[Sequence[pulumi.Input['EligibleApproverArgs']]]):
212
+ pulumi.set(self, "eligible_approvers", value)
213
+
214
+ @property
215
+ @pulumi.getter(name="numApprovalsRequired")
216
+ def num_approvals_required(self) -> pulumi.Input[int]:
217
+ """
218
+ Number of approvals required.
219
+ """
220
+ return pulumi.get(self, "num_approvals_required")
221
+
222
+ @num_approvals_required.setter
223
+ def num_approvals_required(self, value: pulumi.Input[int]):
224
+ pulumi.set(self, "num_approvals_required", value)
225
+
226
+ @property
227
+ @pulumi.getter(name="requireReapprovalOnChange")
228
+ def require_reapproval_on_change(self) -> pulumi.Input[bool]:
229
+ """
230
+ Whether reapproval is required on changes.
231
+ """
232
+ return pulumi.get(self, "require_reapproval_on_change")
233
+
234
+ @require_reapproval_on_change.setter
235
+ def require_reapproval_on_change(self, value: pulumi.Input[bool]):
236
+ pulumi.set(self, "require_reapproval_on_change", value)
237
+
238
+
145
239
  if not MYPY:
146
240
  class AuthPolicyDefinitionArgsDict(TypedDict):
147
241
  decision: pulumi.Input['AuthPolicyDecision']
@@ -968,6 +1062,147 @@ class DeploymentSettingsSourceContextArgs:
968
1062
  pulumi.set(self, "git", value)
969
1063
 
970
1064
 
1065
+ if not MYPY:
1066
+ class EligibleApproverArgsDict(TypedDict):
1067
+ rbac_permission: NotRequired[pulumi.Input['RbacPermission']]
1068
+ """
1069
+ RBAC permission that gives right to approve.
1070
+ """
1071
+ team_name: NotRequired[pulumi.Input[str]]
1072
+ """
1073
+ Name of the team that can approve.
1074
+ """
1075
+ user: NotRequired[pulumi.Input[str]]
1076
+ """
1077
+ Login of the user that can approve.
1078
+ """
1079
+ elif False:
1080
+ EligibleApproverArgsDict: TypeAlias = Mapping[str, Any]
1081
+
1082
+ @pulumi.input_type
1083
+ class EligibleApproverArgs:
1084
+ def __init__(__self__, *,
1085
+ rbac_permission: Optional[pulumi.Input['RbacPermission']] = None,
1086
+ team_name: Optional[pulumi.Input[str]] = None,
1087
+ user: Optional[pulumi.Input[str]] = None):
1088
+ """
1089
+ :param pulumi.Input['RbacPermission'] rbac_permission: RBAC permission that gives right to approve.
1090
+ :param pulumi.Input[str] team_name: Name of the team that can approve.
1091
+ :param pulumi.Input[str] user: Login of the user that can approve.
1092
+ """
1093
+ if rbac_permission is not None:
1094
+ pulumi.set(__self__, "rbac_permission", rbac_permission)
1095
+ if team_name is not None:
1096
+ pulumi.set(__self__, "team_name", team_name)
1097
+ if user is not None:
1098
+ pulumi.set(__self__, "user", user)
1099
+
1100
+ @property
1101
+ @pulumi.getter(name="rbacPermission")
1102
+ def rbac_permission(self) -> Optional[pulumi.Input['RbacPermission']]:
1103
+ """
1104
+ RBAC permission that gives right to approve.
1105
+ """
1106
+ return pulumi.get(self, "rbac_permission")
1107
+
1108
+ @rbac_permission.setter
1109
+ def rbac_permission(self, value: Optional[pulumi.Input['RbacPermission']]):
1110
+ pulumi.set(self, "rbac_permission", value)
1111
+
1112
+ @property
1113
+ @pulumi.getter(name="teamName")
1114
+ def team_name(self) -> Optional[pulumi.Input[str]]:
1115
+ """
1116
+ Name of the team that can approve.
1117
+ """
1118
+ return pulumi.get(self, "team_name")
1119
+
1120
+ @team_name.setter
1121
+ def team_name(self, value: Optional[pulumi.Input[str]]):
1122
+ pulumi.set(self, "team_name", value)
1123
+
1124
+ @property
1125
+ @pulumi.getter
1126
+ def user(self) -> Optional[pulumi.Input[str]]:
1127
+ """
1128
+ Login of the user that can approve.
1129
+ """
1130
+ return pulumi.get(self, "user")
1131
+
1132
+ @user.setter
1133
+ def user(self, value: Optional[pulumi.Input[str]]):
1134
+ pulumi.set(self, "user", value)
1135
+
1136
+
1137
+ if not MYPY:
1138
+ class EnvironmentIdentifierArgsDict(TypedDict):
1139
+ name: pulumi.Input[str]
1140
+ """
1141
+ The environment name.
1142
+ """
1143
+ organization: pulumi.Input[str]
1144
+ """
1145
+ The organization name.
1146
+ """
1147
+ project: pulumi.Input[str]
1148
+ """
1149
+ The project name.
1150
+ """
1151
+ elif False:
1152
+ EnvironmentIdentifierArgsDict: TypeAlias = Mapping[str, Any]
1153
+
1154
+ @pulumi.input_type
1155
+ class EnvironmentIdentifierArgs:
1156
+ def __init__(__self__, *,
1157
+ name: pulumi.Input[str],
1158
+ organization: pulumi.Input[str],
1159
+ project: pulumi.Input[str]):
1160
+ """
1161
+ :param pulumi.Input[str] name: The environment name.
1162
+ :param pulumi.Input[str] organization: The organization name.
1163
+ :param pulumi.Input[str] project: The project name.
1164
+ """
1165
+ pulumi.set(__self__, "name", name)
1166
+ pulumi.set(__self__, "organization", organization)
1167
+ pulumi.set(__self__, "project", project)
1168
+
1169
+ @property
1170
+ @pulumi.getter
1171
+ def name(self) -> pulumi.Input[str]:
1172
+ """
1173
+ The environment name.
1174
+ """
1175
+ return pulumi.get(self, "name")
1176
+
1177
+ @name.setter
1178
+ def name(self, value: pulumi.Input[str]):
1179
+ pulumi.set(self, "name", value)
1180
+
1181
+ @property
1182
+ @pulumi.getter
1183
+ def organization(self) -> pulumi.Input[str]:
1184
+ """
1185
+ The organization name.
1186
+ """
1187
+ return pulumi.get(self, "organization")
1188
+
1189
+ @organization.setter
1190
+ def organization(self, value: pulumi.Input[str]):
1191
+ pulumi.set(self, "organization", value)
1192
+
1193
+ @property
1194
+ @pulumi.getter
1195
+ def project(self) -> pulumi.Input[str]:
1196
+ """
1197
+ The project name.
1198
+ """
1199
+ return pulumi.get(self, "project")
1200
+
1201
+ @project.setter
1202
+ def project(self, value: pulumi.Input[str]):
1203
+ pulumi.set(self, "project", value)
1204
+
1205
+
971
1206
  if not MYPY:
972
1207
  class GCPOIDCConfigurationArgsDict(TypedDict):
973
1208
  project_id: pulumi.Input[str]
@@ -0,0 +1,248 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by pulumi-language-python. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import copy
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from . import _utilities
16
+ from . import outputs
17
+ from ._enums import *
18
+ from ._inputs import *
19
+
20
+ __all__ = ['ApprovalRuleArgs', 'ApprovalRule']
21
+
22
+ @pulumi.input_type
23
+ class ApprovalRuleArgs:
24
+ def __init__(__self__, *,
25
+ approval_rule_config: pulumi.Input['ApprovalRuleConfigArgs'],
26
+ enabled: pulumi.Input[bool],
27
+ environment_identifier: pulumi.Input['EnvironmentIdentifierArgs'],
28
+ name: pulumi.Input[str],
29
+ target_action_types: pulumi.Input[Sequence[pulumi.Input['TargetActionType']]]):
30
+ """
31
+ The set of arguments for constructing a ApprovalRule resource.
32
+ :param pulumi.Input['ApprovalRuleConfigArgs'] approval_rule_config: The approval rule configuration.
33
+ :param pulumi.Input[bool] enabled: Whether the approval rule is enabled.
34
+ :param pulumi.Input['EnvironmentIdentifierArgs'] environment_identifier: The environment this rule applies to.
35
+ :param pulumi.Input[str] name: The name of the approval rule.
36
+ :param pulumi.Input[Sequence[pulumi.Input['TargetActionType']]] target_action_types: The type of action this rule applies to.
37
+ """
38
+ pulumi.set(__self__, "approval_rule_config", approval_rule_config)
39
+ pulumi.set(__self__, "enabled", enabled)
40
+ pulumi.set(__self__, "environment_identifier", environment_identifier)
41
+ pulumi.set(__self__, "name", name)
42
+ pulumi.set(__self__, "target_action_types", target_action_types)
43
+
44
+ @property
45
+ @pulumi.getter(name="approvalRuleConfig")
46
+ def approval_rule_config(self) -> pulumi.Input['ApprovalRuleConfigArgs']:
47
+ """
48
+ The approval rule configuration.
49
+ """
50
+ return pulumi.get(self, "approval_rule_config")
51
+
52
+ @approval_rule_config.setter
53
+ def approval_rule_config(self, value: pulumi.Input['ApprovalRuleConfigArgs']):
54
+ pulumi.set(self, "approval_rule_config", value)
55
+
56
+ @property
57
+ @pulumi.getter
58
+ def enabled(self) -> pulumi.Input[bool]:
59
+ """
60
+ Whether the approval rule is enabled.
61
+ """
62
+ return pulumi.get(self, "enabled")
63
+
64
+ @enabled.setter
65
+ def enabled(self, value: pulumi.Input[bool]):
66
+ pulumi.set(self, "enabled", value)
67
+
68
+ @property
69
+ @pulumi.getter(name="environmentIdentifier")
70
+ def environment_identifier(self) -> pulumi.Input['EnvironmentIdentifierArgs']:
71
+ """
72
+ The environment this rule applies to.
73
+ """
74
+ return pulumi.get(self, "environment_identifier")
75
+
76
+ @environment_identifier.setter
77
+ def environment_identifier(self, value: pulumi.Input['EnvironmentIdentifierArgs']):
78
+ pulumi.set(self, "environment_identifier", value)
79
+
80
+ @property
81
+ @pulumi.getter
82
+ def name(self) -> pulumi.Input[str]:
83
+ """
84
+ The name of the approval rule.
85
+ """
86
+ return pulumi.get(self, "name")
87
+
88
+ @name.setter
89
+ def name(self, value: pulumi.Input[str]):
90
+ pulumi.set(self, "name", value)
91
+
92
+ @property
93
+ @pulumi.getter(name="targetActionTypes")
94
+ def target_action_types(self) -> pulumi.Input[Sequence[pulumi.Input['TargetActionType']]]:
95
+ """
96
+ The type of action this rule applies to.
97
+ """
98
+ return pulumi.get(self, "target_action_types")
99
+
100
+ @target_action_types.setter
101
+ def target_action_types(self, value: pulumi.Input[Sequence[pulumi.Input['TargetActionType']]]):
102
+ pulumi.set(self, "target_action_types", value)
103
+
104
+
105
+ class ApprovalRule(pulumi.CustomResource):
106
+ @overload
107
+ def __init__(__self__,
108
+ resource_name: str,
109
+ opts: Optional[pulumi.ResourceOptions] = None,
110
+ approval_rule_config: Optional[pulumi.Input[Union['ApprovalRuleConfigArgs', 'ApprovalRuleConfigArgsDict']]] = None,
111
+ enabled: Optional[pulumi.Input[bool]] = None,
112
+ environment_identifier: Optional[pulumi.Input[Union['EnvironmentIdentifierArgs', 'EnvironmentIdentifierArgsDict']]] = None,
113
+ name: Optional[pulumi.Input[str]] = None,
114
+ target_action_types: Optional[pulumi.Input[Sequence[pulumi.Input['TargetActionType']]]] = None,
115
+ __props__=None):
116
+ """
117
+ An approval rule for environment deployments.
118
+
119
+ :param str resource_name: The name of the resource.
120
+ :param pulumi.ResourceOptions opts: Options for the resource.
121
+ :param pulumi.Input[Union['ApprovalRuleConfigArgs', 'ApprovalRuleConfigArgsDict']] approval_rule_config: The approval rule configuration.
122
+ :param pulumi.Input[bool] enabled: Whether the approval rule is enabled.
123
+ :param pulumi.Input[Union['EnvironmentIdentifierArgs', 'EnvironmentIdentifierArgsDict']] environment_identifier: The environment this rule applies to.
124
+ :param pulumi.Input[str] name: The name of the approval rule.
125
+ :param pulumi.Input[Sequence[pulumi.Input['TargetActionType']]] target_action_types: The type of action this rule applies to.
126
+ """
127
+ ...
128
+ @overload
129
+ def __init__(__self__,
130
+ resource_name: str,
131
+ args: ApprovalRuleArgs,
132
+ opts: Optional[pulumi.ResourceOptions] = None):
133
+ """
134
+ An approval rule for environment deployments.
135
+
136
+ :param str resource_name: The name of the resource.
137
+ :param ApprovalRuleArgs args: The arguments to use to populate this resource's properties.
138
+ :param pulumi.ResourceOptions opts: Options for the resource.
139
+ """
140
+ ...
141
+ def __init__(__self__, resource_name: str, *args, **kwargs):
142
+ resource_args, opts = _utilities.get_resource_args_opts(ApprovalRuleArgs, pulumi.ResourceOptions, *args, **kwargs)
143
+ if resource_args is not None:
144
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
145
+ else:
146
+ __self__._internal_init(resource_name, *args, **kwargs)
147
+
148
+ def _internal_init(__self__,
149
+ resource_name: str,
150
+ opts: Optional[pulumi.ResourceOptions] = None,
151
+ approval_rule_config: Optional[pulumi.Input[Union['ApprovalRuleConfigArgs', 'ApprovalRuleConfigArgsDict']]] = None,
152
+ enabled: Optional[pulumi.Input[bool]] = None,
153
+ environment_identifier: Optional[pulumi.Input[Union['EnvironmentIdentifierArgs', 'EnvironmentIdentifierArgsDict']]] = None,
154
+ name: Optional[pulumi.Input[str]] = None,
155
+ target_action_types: Optional[pulumi.Input[Sequence[pulumi.Input['TargetActionType']]]] = None,
156
+ __props__=None):
157
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
158
+ if not isinstance(opts, pulumi.ResourceOptions):
159
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
160
+ if opts.id is None:
161
+ if __props__ is not None:
162
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
163
+ __props__ = ApprovalRuleArgs.__new__(ApprovalRuleArgs)
164
+
165
+ if approval_rule_config is None and not opts.urn:
166
+ raise TypeError("Missing required property 'approval_rule_config'")
167
+ __props__.__dict__["approval_rule_config"] = approval_rule_config
168
+ if enabled is None and not opts.urn:
169
+ raise TypeError("Missing required property 'enabled'")
170
+ __props__.__dict__["enabled"] = enabled
171
+ if environment_identifier is None and not opts.urn:
172
+ raise TypeError("Missing required property 'environment_identifier'")
173
+ __props__.__dict__["environment_identifier"] = environment_identifier
174
+ if name is None and not opts.urn:
175
+ raise TypeError("Missing required property 'name'")
176
+ __props__.__dict__["name"] = name
177
+ if target_action_types is None and not opts.urn:
178
+ raise TypeError("Missing required property 'target_action_types'")
179
+ __props__.__dict__["target_action_types"] = target_action_types
180
+ super(ApprovalRule, __self__).__init__(
181
+ 'pulumiservice:index:ApprovalRule',
182
+ resource_name,
183
+ __props__,
184
+ opts)
185
+
186
+ @staticmethod
187
+ def get(resource_name: str,
188
+ id: pulumi.Input[str],
189
+ opts: Optional[pulumi.ResourceOptions] = None) -> 'ApprovalRule':
190
+ """
191
+ Get an existing ApprovalRule resource's state with the given name, id, and optional extra
192
+ properties used to qualify the lookup.
193
+
194
+ :param str resource_name: The unique name of the resulting resource.
195
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
196
+ :param pulumi.ResourceOptions opts: Options for the resource.
197
+ """
198
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
199
+
200
+ __props__ = ApprovalRuleArgs.__new__(ApprovalRuleArgs)
201
+
202
+ __props__.__dict__["approval_rule_config"] = None
203
+ __props__.__dict__["enabled"] = None
204
+ __props__.__dict__["environment_identifier"] = None
205
+ __props__.__dict__["name"] = None
206
+ __props__.__dict__["target_action_types"] = None
207
+ return ApprovalRule(resource_name, opts=opts, __props__=__props__)
208
+
209
+ @property
210
+ @pulumi.getter(name="approvalRuleConfig")
211
+ def approval_rule_config(self) -> pulumi.Output['outputs.ApprovalRuleConfig']:
212
+ """
213
+ The approval rule configuration.
214
+ """
215
+ return pulumi.get(self, "approval_rule_config")
216
+
217
+ @property
218
+ @pulumi.getter
219
+ def enabled(self) -> pulumi.Output[bool]:
220
+ """
221
+ Whether the approval rule is enabled.
222
+ """
223
+ return pulumi.get(self, "enabled")
224
+
225
+ @property
226
+ @pulumi.getter(name="environmentIdentifier")
227
+ def environment_identifier(self) -> pulumi.Output['outputs.EnvironmentIdentifier']:
228
+ """
229
+ The environment this rule applies to.
230
+ """
231
+ return pulumi.get(self, "environment_identifier")
232
+
233
+ @property
234
+ @pulumi.getter
235
+ def name(self) -> pulumi.Output[str]:
236
+ """
237
+ Name of the approval rule.
238
+ """
239
+ return pulumi.get(self, "name")
240
+
241
+ @property
242
+ @pulumi.getter(name="targetActionTypes")
243
+ def target_action_types(self) -> pulumi.Output[Sequence['TargetActionType']]:
244
+ """
245
+ The type of action this rule applies to.
246
+ """
247
+ return pulumi.get(self, "target_action_types")
248
+
@@ -18,6 +18,7 @@ from ._enums import *
18
18
 
19
19
  __all__ = [
20
20
  'AWSOIDCConfiguration',
21
+ 'ApprovalRuleConfig',
21
22
  'AuthPolicyDefinition',
22
23
  'AzureOIDCConfiguration',
23
24
  'DeploymentSettingsCacheOptions',
@@ -29,6 +30,8 @@ __all__ = [
29
30
  'DeploymentSettingsGithub',
30
31
  'DeploymentSettingsOperationContext',
31
32
  'DeploymentSettingsSourceContext',
33
+ 'EligibleApprover',
34
+ 'EnvironmentIdentifier',
32
35
  'GCPOIDCConfiguration',
33
36
  'OperationContextOIDC',
34
37
  'OperationContextOptions',
@@ -109,6 +112,80 @@ class AWSOIDCConfiguration(dict):
109
112
  return pulumi.get(self, "policy_arns")
110
113
 
111
114
 
115
+ @pulumi.output_type
116
+ class ApprovalRuleConfig(dict):
117
+ @staticmethod
118
+ def __key_warning(key: str):
119
+ suggest = None
120
+ if key == "allowSelfApproval":
121
+ suggest = "allow_self_approval"
122
+ elif key == "eligibleApprovers":
123
+ suggest = "eligible_approvers"
124
+ elif key == "numApprovalsRequired":
125
+ suggest = "num_approvals_required"
126
+ elif key == "requireReapprovalOnChange":
127
+ suggest = "require_reapproval_on_change"
128
+
129
+ if suggest:
130
+ pulumi.log.warn(f"Key '{key}' not found in ApprovalRuleConfig. Access the value via the '{suggest}' property getter instead.")
131
+
132
+ def __getitem__(self, key: str) -> Any:
133
+ ApprovalRuleConfig.__key_warning(key)
134
+ return super().__getitem__(key)
135
+
136
+ def get(self, key: str, default = None) -> Any:
137
+ ApprovalRuleConfig.__key_warning(key)
138
+ return super().get(key, default)
139
+
140
+ def __init__(__self__, *,
141
+ allow_self_approval: bool,
142
+ eligible_approvers: Sequence['outputs.EligibleApprover'],
143
+ num_approvals_required: int,
144
+ require_reapproval_on_change: bool):
145
+ """
146
+ :param bool allow_self_approval: Whether self-approval is allowed.
147
+ :param Sequence['EligibleApprover'] eligible_approvers: List of eligible approvers.
148
+ :param int num_approvals_required: Number of approvals required.
149
+ :param bool require_reapproval_on_change: Whether reapproval is required on changes.
150
+ """
151
+ pulumi.set(__self__, "allow_self_approval", allow_self_approval)
152
+ pulumi.set(__self__, "eligible_approvers", eligible_approvers)
153
+ pulumi.set(__self__, "num_approvals_required", num_approvals_required)
154
+ pulumi.set(__self__, "require_reapproval_on_change", require_reapproval_on_change)
155
+
156
+ @property
157
+ @pulumi.getter(name="allowSelfApproval")
158
+ def allow_self_approval(self) -> bool:
159
+ """
160
+ Whether self-approval is allowed.
161
+ """
162
+ return pulumi.get(self, "allow_self_approval")
163
+
164
+ @property
165
+ @pulumi.getter(name="eligibleApprovers")
166
+ def eligible_approvers(self) -> Sequence['outputs.EligibleApprover']:
167
+ """
168
+ List of eligible approvers.
169
+ """
170
+ return pulumi.get(self, "eligible_approvers")
171
+
172
+ @property
173
+ @pulumi.getter(name="numApprovalsRequired")
174
+ def num_approvals_required(self) -> int:
175
+ """
176
+ Number of approvals required.
177
+ """
178
+ return pulumi.get(self, "num_approvals_required")
179
+
180
+ @property
181
+ @pulumi.getter(name="requireReapprovalOnChange")
182
+ def require_reapproval_on_change(self) -> bool:
183
+ """
184
+ Whether reapproval is required on changes.
185
+ """
186
+ return pulumi.get(self, "require_reapproval_on_change")
187
+
188
+
112
189
  @pulumi.output_type
113
190
  class AuthPolicyDefinition(dict):
114
191
  @staticmethod
@@ -776,6 +853,108 @@ class DeploymentSettingsSourceContext(dict):
776
853
  return pulumi.get(self, "git")
777
854
 
778
855
 
856
+ @pulumi.output_type
857
+ class EligibleApprover(dict):
858
+ @staticmethod
859
+ def __key_warning(key: str):
860
+ suggest = None
861
+ if key == "rbacPermission":
862
+ suggest = "rbac_permission"
863
+ elif key == "teamName":
864
+ suggest = "team_name"
865
+
866
+ if suggest:
867
+ pulumi.log.warn(f"Key '{key}' not found in EligibleApprover. Access the value via the '{suggest}' property getter instead.")
868
+
869
+ def __getitem__(self, key: str) -> Any:
870
+ EligibleApprover.__key_warning(key)
871
+ return super().__getitem__(key)
872
+
873
+ def get(self, key: str, default = None) -> Any:
874
+ EligibleApprover.__key_warning(key)
875
+ return super().get(key, default)
876
+
877
+ def __init__(__self__, *,
878
+ rbac_permission: Optional['RbacPermission'] = None,
879
+ team_name: Optional[str] = None,
880
+ user: Optional[str] = None):
881
+ """
882
+ :param 'RbacPermission' rbac_permission: RBAC permission that gives right to approve.
883
+ :param str team_name: Name of the team that can approve.
884
+ :param str user: Login of the user that can approve.
885
+ """
886
+ if rbac_permission is not None:
887
+ pulumi.set(__self__, "rbac_permission", rbac_permission)
888
+ if team_name is not None:
889
+ pulumi.set(__self__, "team_name", team_name)
890
+ if user is not None:
891
+ pulumi.set(__self__, "user", user)
892
+
893
+ @property
894
+ @pulumi.getter(name="rbacPermission")
895
+ def rbac_permission(self) -> Optional['RbacPermission']:
896
+ """
897
+ RBAC permission that gives right to approve.
898
+ """
899
+ return pulumi.get(self, "rbac_permission")
900
+
901
+ @property
902
+ @pulumi.getter(name="teamName")
903
+ def team_name(self) -> Optional[str]:
904
+ """
905
+ Name of the team that can approve.
906
+ """
907
+ return pulumi.get(self, "team_name")
908
+
909
+ @property
910
+ @pulumi.getter
911
+ def user(self) -> Optional[str]:
912
+ """
913
+ Login of the user that can approve.
914
+ """
915
+ return pulumi.get(self, "user")
916
+
917
+
918
+ @pulumi.output_type
919
+ class EnvironmentIdentifier(dict):
920
+ def __init__(__self__, *,
921
+ name: str,
922
+ organization: str,
923
+ project: str):
924
+ """
925
+ :param str name: The environment name.
926
+ :param str organization: The organization name.
927
+ :param str project: The project name.
928
+ """
929
+ pulumi.set(__self__, "name", name)
930
+ pulumi.set(__self__, "organization", organization)
931
+ pulumi.set(__self__, "project", project)
932
+
933
+ @property
934
+ @pulumi.getter
935
+ def name(self) -> str:
936
+ """
937
+ The environment name.
938
+ """
939
+ return pulumi.get(self, "name")
940
+
941
+ @property
942
+ @pulumi.getter
943
+ def organization(self) -> str:
944
+ """
945
+ The organization name.
946
+ """
947
+ return pulumi.get(self, "organization")
948
+
949
+ @property
950
+ @pulumi.getter
951
+ def project(self) -> str:
952
+ """
953
+ The project name.
954
+ """
955
+ return pulumi.get(self, "project")
956
+
957
+
779
958
  @pulumi.output_type
780
959
  class GCPOIDCConfiguration(dict):
781
960
  @staticmethod
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "resource": true,
3
3
  "name": "pulumiservice",
4
- "version": "0.30.0-alpha.1753883224"
4
+ "version": "0.31.0"
5
5
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulumi_pulumiservice
3
- Version: 0.30.0a1753883224
3
+ Version: 0.31.0
4
4
  Summary: A native Pulumi package for creating and managing Pulumi Cloud constructs
5
5
  License: Apache-2.0
6
6
  Project-URL: Homepage, https://pulumi.com
@@ -6,6 +6,7 @@ pulumi_pulumiservice/_inputs.py
6
6
  pulumi_pulumiservice/_utilities.py
7
7
  pulumi_pulumiservice/access_token.py
8
8
  pulumi_pulumiservice/agent_pool.py
9
+ pulumi_pulumiservice/approval_rule.py
9
10
  pulumi_pulumiservice/deployment_schedule.py
10
11
  pulumi_pulumiservice/deployment_settings.py
11
12
  pulumi_pulumiservice/drift_schedule.py
@@ -5,7 +5,7 @@
5
5
  keywords = ["pulumi", "kind/native", "category/infrastructure"]
6
6
  readme = "README.md"
7
7
  requires-python = ">=3.8"
8
- version = "0.30.0a1753883224"
8
+ version = "0.31.0"
9
9
  [project.license]
10
10
  text = "Apache-2.0"
11
11
  [project.urls]