pulumi-gitlab 9.3.0a1759182301__py3-none-any.whl → 9.8.1__py3-none-any.whl

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 (121) hide show
  1. pulumi_gitlab/__init__.py +107 -0
  2. pulumi_gitlab/_inputs.py +795 -0
  3. pulumi_gitlab/application_settings.py +16 -7
  4. pulumi_gitlab/branch.py +1 -1
  5. pulumi_gitlab/cluster_agent_token.py +1 -1
  6. pulumi_gitlab/config/__init__.pyi +15 -0
  7. pulumi_gitlab/config/vars.py +21 -0
  8. pulumi_gitlab/deploy_key_enable.py +4 -42
  9. pulumi_gitlab/deploy_token.py +11 -7
  10. pulumi_gitlab/get_artifact_file.py +266 -0
  11. pulumi_gitlab/get_branch.py +1 -1
  12. pulumi_gitlab/get_cluster_agent.py +3 -3
  13. pulumi_gitlab/get_cluster_agents.py +6 -6
  14. pulumi_gitlab/get_current_user.py +1 -1
  15. pulumi_gitlab/get_group.py +2 -2
  16. pulumi_gitlab/get_group_billable_member_memberships.py +2 -2
  17. pulumi_gitlab/get_group_hook.py +22 -3
  18. pulumi_gitlab/get_group_hooks.py +7 -3
  19. pulumi_gitlab/get_group_membership.py +2 -2
  20. pulumi_gitlab/get_group_saml_links.py +114 -0
  21. pulumi_gitlab/get_group_service_account.py +6 -2
  22. pulumi_gitlab/get_group_service_account_access_tokens.py +138 -0
  23. pulumi_gitlab/get_group_subgroups.py +1 -1
  24. pulumi_gitlab/get_group_variable.py +1 -1
  25. pulumi_gitlab/get_groups.py +1 -1
  26. pulumi_gitlab/get_instance_deploy_keys.py +1 -1
  27. pulumi_gitlab/get_instance_service_account.py +2 -2
  28. pulumi_gitlab/get_instance_variable.py +7 -7
  29. pulumi_gitlab/get_instance_variables.py +4 -4
  30. pulumi_gitlab/get_member_role.py +200 -0
  31. pulumi_gitlab/get_project.py +27 -7
  32. pulumi_gitlab/get_project_approval_rules.py +137 -0
  33. pulumi_gitlab/get_project_branches.py +1 -1
  34. pulumi_gitlab/get_project_hook.py +20 -5
  35. pulumi_gitlab/get_project_hooks.py +1 -1
  36. pulumi_gitlab/get_project_issue_label_events.py +170 -0
  37. pulumi_gitlab/get_project_membership.py +34 -16
  38. pulumi_gitlab/get_project_milestone.py +1 -1
  39. pulumi_gitlab/get_project_milestones.py +1 -1
  40. pulumi_gitlab/get_project_protected_tag.py +2 -2
  41. pulumi_gitlab/get_project_secure_file.py +247 -0
  42. pulumi_gitlab/get_project_tag.py +2 -2
  43. pulumi_gitlab/get_project_tags.py +1 -1
  44. pulumi_gitlab/get_project_variable.py +12 -12
  45. pulumi_gitlab/get_project_variables.py +4 -4
  46. pulumi_gitlab/get_projects.py +3 -3
  47. pulumi_gitlab/get_release_link.py +9 -9
  48. pulumi_gitlab/get_release_links.py +4 -4
  49. pulumi_gitlab/get_repository_file.py +1 -1
  50. pulumi_gitlab/get_repository_tree.py +1 -1
  51. pulumi_gitlab/get_security_policy_document.py +170 -0
  52. pulumi_gitlab/get_user.py +33 -1
  53. pulumi_gitlab/get_users.py +22 -2
  54. pulumi_gitlab/global_level_notifications.py +2 -2
  55. pulumi_gitlab/group.py +148 -7
  56. pulumi_gitlab/group_access_token.py +54 -7
  57. pulumi_gitlab/group_deploy_token.py +582 -0
  58. pulumi_gitlab/group_hook.py +163 -112
  59. pulumi_gitlab/group_label.py +7 -7
  60. pulumi_gitlab/group_level_mr_approvals.py +509 -0
  61. pulumi_gitlab/group_membership.py +10 -10
  62. pulumi_gitlab/group_service_account.py +38 -2
  63. pulumi_gitlab/group_service_account_access_token.py +146 -5
  64. pulumi_gitlab/group_share_group.py +13 -9
  65. pulumi_gitlab/instance_service_account.py +3 -3
  66. pulumi_gitlab/instance_variable.py +12 -12
  67. pulumi_gitlab/integration_custom_issue_tracker.py +4 -0
  68. pulumi_gitlab/integration_emails_on_push.py +9 -7
  69. pulumi_gitlab/integration_harbor.py +4 -0
  70. pulumi_gitlab/integration_jenkins.py +4 -0
  71. pulumi_gitlab/integration_redmine.py +4 -2
  72. pulumi_gitlab/integration_telegram.py +4 -0
  73. pulumi_gitlab/label.py +11 -7
  74. pulumi_gitlab/member_role.py +9 -9
  75. pulumi_gitlab/outputs.py +1279 -112
  76. pulumi_gitlab/pages_domain.py +7 -7
  77. pulumi_gitlab/personal_access_token.py +52 -5
  78. pulumi_gitlab/pipeline_schedule_variable.py +2 -2
  79. pulumi_gitlab/project.py +241 -105
  80. pulumi_gitlab/project_access_token.py +52 -5
  81. pulumi_gitlab/project_approval_rule.py +120 -0
  82. pulumi_gitlab/project_cicd_catalog.py +314 -0
  83. pulumi_gitlab/project_deploy_token.py +582 -0
  84. pulumi_gitlab/project_environment.py +4 -4
  85. pulumi_gitlab/project_external_status_check.py +469 -0
  86. pulumi_gitlab/project_freeze_period.py +22 -22
  87. pulumi_gitlab/project_hook.py +162 -109
  88. pulumi_gitlab/project_integration_emails_on_push.py +17 -7
  89. pulumi_gitlab/project_issue_link.py +502 -0
  90. pulumi_gitlab/project_job_token_scope.py +24 -4
  91. pulumi_gitlab/project_job_token_scopes.py +14 -14
  92. pulumi_gitlab/project_label.py +11 -11
  93. pulumi_gitlab/project_level_mr_approvals.py +2 -2
  94. pulumi_gitlab/project_level_notifications.py +2 -2
  95. pulumi_gitlab/project_membership.py +9 -9
  96. pulumi_gitlab/project_mirror.py +8 -6
  97. pulumi_gitlab/project_package_dependency_proxy.py +446 -0
  98. pulumi_gitlab/project_protected_environment.py +14 -14
  99. pulumi_gitlab/project_pull_mirror.py +837 -0
  100. pulumi_gitlab/project_push_mirror.py +547 -0
  101. pulumi_gitlab/project_secure_file.py +489 -0
  102. pulumi_gitlab/project_tag.py +3 -3
  103. pulumi_gitlab/project_target_branch_rule.py +2 -2
  104. pulumi_gitlab/project_variable.py +7 -7
  105. pulumi_gitlab/project_wiki_page.py +30 -0
  106. pulumi_gitlab/provider.py +76 -0
  107. pulumi_gitlab/pulumi-plugin.json +1 -1
  108. pulumi_gitlab/release_link.py +19 -19
  109. pulumi_gitlab/runner.py +8 -4
  110. pulumi_gitlab/system_hook.py +7 -7
  111. pulumi_gitlab/user_avatar.py +386 -0
  112. pulumi_gitlab/user_gpg_key.py +2 -2
  113. pulumi_gitlab/user_impersonation_token.py +52 -5
  114. pulumi_gitlab/user_runner.py +14 -14
  115. pulumi_gitlab/user_ssh_key.py +2 -2
  116. pulumi_gitlab/value_stream_analytics.py +92 -0
  117. {pulumi_gitlab-9.3.0a1759182301.dist-info → pulumi_gitlab-9.8.1.dist-info}/METADATA +1 -1
  118. pulumi_gitlab-9.8.1.dist-info/RECORD +207 -0
  119. pulumi_gitlab-9.3.0a1759182301.dist-info/RECORD +0 -188
  120. {pulumi_gitlab-9.3.0a1759182301.dist-info → pulumi_gitlab-9.8.1.dist-info}/WHEEL +0 -0
  121. {pulumi_gitlab-9.3.0a1759182301.dist-info → pulumi_gitlab-9.8.1.dist-info}/top_level.txt +0 -0
@@ -365,7 +365,12 @@ class ProjectIntegrationEmailsOnPush(pulumi.CustomResource):
365
365
  visibility_level="public")
366
366
  emails = gitlab.ProjectIntegrationEmailsOnPush("emails",
367
367
  project=awesome_project.id,
368
- recipients="myrecipient@example.com myotherrecipient@example.com")
368
+ recipients="myrecipient@example.com myotherrecipient@example.com",
369
+ disable_diffs=False,
370
+ send_from_committer_email=False,
371
+ push_events=True,
372
+ tag_push_events=True,
373
+ branches_to_be_notified="all")
369
374
  ```
370
375
 
371
376
  ## Import
@@ -423,7 +428,12 @@ class ProjectIntegrationEmailsOnPush(pulumi.CustomResource):
423
428
  visibility_level="public")
424
429
  emails = gitlab.ProjectIntegrationEmailsOnPush("emails",
425
430
  project=awesome_project.id,
426
- recipients="myrecipient@example.com myotherrecipient@example.com")
431
+ recipients="myrecipient@example.com myotherrecipient@example.com",
432
+ disable_diffs=False,
433
+ send_from_committer_email=False,
434
+ push_events=True,
435
+ tag_push_events=True,
436
+ branches_to_be_notified="all")
427
437
  ```
428
438
 
429
439
  ## Import
@@ -565,7 +575,7 @@ class ProjectIntegrationEmailsOnPush(pulumi.CustomResource):
565
575
 
566
576
  @_builtins.property
567
577
  @pulumi.getter(name="branchesToBeNotified")
568
- def branches_to_be_notified(self) -> pulumi.Output[Optional[_builtins.str]]:
578
+ def branches_to_be_notified(self) -> pulumi.Output[_builtins.str]:
569
579
  """
570
580
  Branches to send notifications for. Valid options are `all`, `default`, `protected`, `default_and_protected`. Notifications are always fired for tag pushes.
571
581
  """
@@ -581,7 +591,7 @@ class ProjectIntegrationEmailsOnPush(pulumi.CustomResource):
581
591
 
582
592
  @_builtins.property
583
593
  @pulumi.getter(name="disableDiffs")
584
- def disable_diffs(self) -> pulumi.Output[Optional[_builtins.bool]]:
594
+ def disable_diffs(self) -> pulumi.Output[_builtins.bool]:
585
595
  """
586
596
  Disable code diffs.
587
597
  """
@@ -597,7 +607,7 @@ class ProjectIntegrationEmailsOnPush(pulumi.CustomResource):
597
607
 
598
608
  @_builtins.property
599
609
  @pulumi.getter(name="pushEvents")
600
- def push_events(self) -> pulumi.Output[Optional[_builtins.bool]]:
610
+ def push_events(self) -> pulumi.Output[_builtins.bool]:
601
611
  """
602
612
  Enable notifications for push events.
603
613
  """
@@ -613,7 +623,7 @@ class ProjectIntegrationEmailsOnPush(pulumi.CustomResource):
613
623
 
614
624
  @_builtins.property
615
625
  @pulumi.getter(name="sendFromCommitterEmail")
616
- def send_from_committer_email(self) -> pulumi.Output[Optional[_builtins.bool]]:
626
+ def send_from_committer_email(self) -> pulumi.Output[_builtins.bool]:
617
627
  """
618
628
  Send from committer.
619
629
  """
@@ -629,7 +639,7 @@ class ProjectIntegrationEmailsOnPush(pulumi.CustomResource):
629
639
 
630
640
  @_builtins.property
631
641
  @pulumi.getter(name="tagPushEvents")
632
- def tag_push_events(self) -> pulumi.Output[Optional[_builtins.bool]]:
642
+ def tag_push_events(self) -> pulumi.Output[_builtins.bool]:
633
643
  """
634
644
  Enable notifications for tag push events.
635
645
  """
@@ -0,0 +1,502 @@
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 builtins as _builtins
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
+
17
+ __all__ = ['ProjectIssueLinkArgs', 'ProjectIssueLink']
18
+
19
+ @pulumi.input_type
20
+ class ProjectIssueLinkArgs:
21
+ def __init__(__self__, *,
22
+ issue_iid: pulumi.Input[_builtins.int],
23
+ link_type: pulumi.Input[_builtins.str],
24
+ project: pulumi.Input[_builtins.str],
25
+ target_issue_iid: pulumi.Input[_builtins.int],
26
+ target_project_id: pulumi.Input[_builtins.str]):
27
+ """
28
+ The set of arguments for constructing a ProjectIssueLink resource.
29
+ :param pulumi.Input[_builtins.int] issue_iid: The internal ID of a project's issue.
30
+ :param pulumi.Input[_builtins.str] link_type: Type of the relationship. Valid values are `relates_to`, `blocks`, `is_blocked_by`.
31
+ :param pulumi.Input[_builtins.str] project: The ID or URL-encoded path of the project.
32
+ :param pulumi.Input[_builtins.int] target_issue_iid: The internal ID of the target issue.
33
+ :param pulumi.Input[_builtins.str] target_project_id: The ID or URL-encoded path of the target project.
34
+ """
35
+ pulumi.set(__self__, "issue_iid", issue_iid)
36
+ pulumi.set(__self__, "link_type", link_type)
37
+ pulumi.set(__self__, "project", project)
38
+ pulumi.set(__self__, "target_issue_iid", target_issue_iid)
39
+ pulumi.set(__self__, "target_project_id", target_project_id)
40
+
41
+ @_builtins.property
42
+ @pulumi.getter(name="issueIid")
43
+ def issue_iid(self) -> pulumi.Input[_builtins.int]:
44
+ """
45
+ The internal ID of a project's issue.
46
+ """
47
+ return pulumi.get(self, "issue_iid")
48
+
49
+ @issue_iid.setter
50
+ def issue_iid(self, value: pulumi.Input[_builtins.int]):
51
+ pulumi.set(self, "issue_iid", value)
52
+
53
+ @_builtins.property
54
+ @pulumi.getter(name="linkType")
55
+ def link_type(self) -> pulumi.Input[_builtins.str]:
56
+ """
57
+ Type of the relationship. Valid values are `relates_to`, `blocks`, `is_blocked_by`.
58
+ """
59
+ return pulumi.get(self, "link_type")
60
+
61
+ @link_type.setter
62
+ def link_type(self, value: pulumi.Input[_builtins.str]):
63
+ pulumi.set(self, "link_type", value)
64
+
65
+ @_builtins.property
66
+ @pulumi.getter
67
+ def project(self) -> pulumi.Input[_builtins.str]:
68
+ """
69
+ The ID or URL-encoded path of the project.
70
+ """
71
+ return pulumi.get(self, "project")
72
+
73
+ @project.setter
74
+ def project(self, value: pulumi.Input[_builtins.str]):
75
+ pulumi.set(self, "project", value)
76
+
77
+ @_builtins.property
78
+ @pulumi.getter(name="targetIssueIid")
79
+ def target_issue_iid(self) -> pulumi.Input[_builtins.int]:
80
+ """
81
+ The internal ID of the target issue.
82
+ """
83
+ return pulumi.get(self, "target_issue_iid")
84
+
85
+ @target_issue_iid.setter
86
+ def target_issue_iid(self, value: pulumi.Input[_builtins.int]):
87
+ pulumi.set(self, "target_issue_iid", value)
88
+
89
+ @_builtins.property
90
+ @pulumi.getter(name="targetProjectId")
91
+ def target_project_id(self) -> pulumi.Input[_builtins.str]:
92
+ """
93
+ The ID or URL-encoded path of the target project.
94
+ """
95
+ return pulumi.get(self, "target_project_id")
96
+
97
+ @target_project_id.setter
98
+ def target_project_id(self, value: pulumi.Input[_builtins.str]):
99
+ pulumi.set(self, "target_project_id", value)
100
+
101
+
102
+ @pulumi.input_type
103
+ class _ProjectIssueLinkState:
104
+ def __init__(__self__, *,
105
+ issue_iid: Optional[pulumi.Input[_builtins.int]] = None,
106
+ issue_link_id: Optional[pulumi.Input[_builtins.int]] = None,
107
+ link_type: Optional[pulumi.Input[_builtins.str]] = None,
108
+ project: Optional[pulumi.Input[_builtins.str]] = None,
109
+ target_issue_iid: Optional[pulumi.Input[_builtins.int]] = None,
110
+ target_project_id: Optional[pulumi.Input[_builtins.str]] = None):
111
+ """
112
+ Input properties used for looking up and filtering ProjectIssueLink resources.
113
+ :param pulumi.Input[_builtins.int] issue_iid: The internal ID of a project's issue.
114
+ :param pulumi.Input[_builtins.int] issue_link_id: ID of an issue relationship.
115
+ :param pulumi.Input[_builtins.str] link_type: Type of the relationship. Valid values are `relates_to`, `blocks`, `is_blocked_by`.
116
+ :param pulumi.Input[_builtins.str] project: The ID or URL-encoded path of the project.
117
+ :param pulumi.Input[_builtins.int] target_issue_iid: The internal ID of the target issue.
118
+ :param pulumi.Input[_builtins.str] target_project_id: The ID or URL-encoded path of the target project.
119
+ """
120
+ if issue_iid is not None:
121
+ pulumi.set(__self__, "issue_iid", issue_iid)
122
+ if issue_link_id is not None:
123
+ pulumi.set(__self__, "issue_link_id", issue_link_id)
124
+ if link_type is not None:
125
+ pulumi.set(__self__, "link_type", link_type)
126
+ if project is not None:
127
+ pulumi.set(__self__, "project", project)
128
+ if target_issue_iid is not None:
129
+ pulumi.set(__self__, "target_issue_iid", target_issue_iid)
130
+ if target_project_id is not None:
131
+ pulumi.set(__self__, "target_project_id", target_project_id)
132
+
133
+ @_builtins.property
134
+ @pulumi.getter(name="issueIid")
135
+ def issue_iid(self) -> Optional[pulumi.Input[_builtins.int]]:
136
+ """
137
+ The internal ID of a project's issue.
138
+ """
139
+ return pulumi.get(self, "issue_iid")
140
+
141
+ @issue_iid.setter
142
+ def issue_iid(self, value: Optional[pulumi.Input[_builtins.int]]):
143
+ pulumi.set(self, "issue_iid", value)
144
+
145
+ @_builtins.property
146
+ @pulumi.getter(name="issueLinkId")
147
+ def issue_link_id(self) -> Optional[pulumi.Input[_builtins.int]]:
148
+ """
149
+ ID of an issue relationship.
150
+ """
151
+ return pulumi.get(self, "issue_link_id")
152
+
153
+ @issue_link_id.setter
154
+ def issue_link_id(self, value: Optional[pulumi.Input[_builtins.int]]):
155
+ pulumi.set(self, "issue_link_id", value)
156
+
157
+ @_builtins.property
158
+ @pulumi.getter(name="linkType")
159
+ def link_type(self) -> Optional[pulumi.Input[_builtins.str]]:
160
+ """
161
+ Type of the relationship. Valid values are `relates_to`, `blocks`, `is_blocked_by`.
162
+ """
163
+ return pulumi.get(self, "link_type")
164
+
165
+ @link_type.setter
166
+ def link_type(self, value: Optional[pulumi.Input[_builtins.str]]):
167
+ pulumi.set(self, "link_type", value)
168
+
169
+ @_builtins.property
170
+ @pulumi.getter
171
+ def project(self) -> Optional[pulumi.Input[_builtins.str]]:
172
+ """
173
+ The ID or URL-encoded path of the project.
174
+ """
175
+ return pulumi.get(self, "project")
176
+
177
+ @project.setter
178
+ def project(self, value: Optional[pulumi.Input[_builtins.str]]):
179
+ pulumi.set(self, "project", value)
180
+
181
+ @_builtins.property
182
+ @pulumi.getter(name="targetIssueIid")
183
+ def target_issue_iid(self) -> Optional[pulumi.Input[_builtins.int]]:
184
+ """
185
+ The internal ID of the target issue.
186
+ """
187
+ return pulumi.get(self, "target_issue_iid")
188
+
189
+ @target_issue_iid.setter
190
+ def target_issue_iid(self, value: Optional[pulumi.Input[_builtins.int]]):
191
+ pulumi.set(self, "target_issue_iid", value)
192
+
193
+ @_builtins.property
194
+ @pulumi.getter(name="targetProjectId")
195
+ def target_project_id(self) -> Optional[pulumi.Input[_builtins.str]]:
196
+ """
197
+ The ID or URL-encoded path of the target project.
198
+ """
199
+ return pulumi.get(self, "target_project_id")
200
+
201
+ @target_project_id.setter
202
+ def target_project_id(self, value: Optional[pulumi.Input[_builtins.str]]):
203
+ pulumi.set(self, "target_project_id", value)
204
+
205
+
206
+ @pulumi.type_token("gitlab:index/projectIssueLink:ProjectIssueLink")
207
+ class ProjectIssueLink(pulumi.CustomResource):
208
+ @overload
209
+ def __init__(__self__,
210
+ resource_name: str,
211
+ opts: Optional[pulumi.ResourceOptions] = None,
212
+ issue_iid: Optional[pulumi.Input[_builtins.int]] = None,
213
+ link_type: Optional[pulumi.Input[_builtins.str]] = None,
214
+ project: Optional[pulumi.Input[_builtins.str]] = None,
215
+ target_issue_iid: Optional[pulumi.Input[_builtins.int]] = None,
216
+ target_project_id: Optional[pulumi.Input[_builtins.str]] = None,
217
+ __props__=None):
218
+ """
219
+ The `ProjectIssueLink` resource allows to manage the lifecycle of project issue links.
220
+
221
+ **Upstream API**: [GitLab REST API docs](https://docs.gitlab.com/api/issue_links/)
222
+
223
+ ## Example Usage
224
+
225
+ ```python
226
+ import pulumi
227
+ import pulumi_gitlab as gitlab
228
+
229
+ # Create a project
230
+ example = gitlab.Project("example",
231
+ name="example",
232
+ description="An example project",
233
+ visibility_level="public")
234
+ # Create source issue
235
+ source = gitlab.ProjectIssue("source",
236
+ project=example.id,
237
+ title="Source Issue")
238
+ # Create target issue
239
+ target = gitlab.ProjectIssue("target",
240
+ project=example.id,
241
+ title="Target Issue")
242
+ # Link issues with "relates_to" link type (default)
243
+ relates_to = gitlab.ProjectIssueLink("relates_to",
244
+ project=example.id,
245
+ issue_iid=source.iid,
246
+ target_project_id=example.id,
247
+ target_issue_iid=target.iid,
248
+ link_type="relates_to")
249
+ # Cross-project linking example
250
+ other_project = gitlab.Project("other_project",
251
+ name="other_project",
252
+ description="Another project for cross-project linking")
253
+ cross_target = gitlab.ProjectIssue("cross_target",
254
+ project=other_project.id,
255
+ title="Cross-Project Target Issue")
256
+ cross_project_relates_to = gitlab.ProjectIssueLink("cross_project_relates_to",
257
+ project=example.id,
258
+ issue_iid=source.iid,
259
+ target_project_id=other_project.id,
260
+ target_issue_iid=cross_target.iid,
261
+ link_type="relates_to")
262
+ ```
263
+
264
+ ## Import
265
+
266
+ Starting in Terraform v1.5.0, you can use an import block to import `gitlab_project_issue_link`. For example:
267
+
268
+ terraform
269
+
270
+ import {
271
+
272
+ to = gitlab_project_issue_link.example
273
+
274
+ id = "see CLI command below for ID"
275
+
276
+ }
277
+
278
+ Importing using the CLI is supported with the following syntax:
279
+
280
+ You can import this resource with an id made up of `{project-id}:{source-issue-iid}:{target-issue-iid}`, e.g.
281
+
282
+ ```sh
283
+ $ pulumi import gitlab:index/projectIssueLink:ProjectIssueLink example 42:1001:1002
284
+ ```
285
+
286
+ :param str resource_name: The name of the resource.
287
+ :param pulumi.ResourceOptions opts: Options for the resource.
288
+ :param pulumi.Input[_builtins.int] issue_iid: The internal ID of a project's issue.
289
+ :param pulumi.Input[_builtins.str] link_type: Type of the relationship. Valid values are `relates_to`, `blocks`, `is_blocked_by`.
290
+ :param pulumi.Input[_builtins.str] project: The ID or URL-encoded path of the project.
291
+ :param pulumi.Input[_builtins.int] target_issue_iid: The internal ID of the target issue.
292
+ :param pulumi.Input[_builtins.str] target_project_id: The ID or URL-encoded path of the target project.
293
+ """
294
+ ...
295
+ @overload
296
+ def __init__(__self__,
297
+ resource_name: str,
298
+ args: ProjectIssueLinkArgs,
299
+ opts: Optional[pulumi.ResourceOptions] = None):
300
+ """
301
+ The `ProjectIssueLink` resource allows to manage the lifecycle of project issue links.
302
+
303
+ **Upstream API**: [GitLab REST API docs](https://docs.gitlab.com/api/issue_links/)
304
+
305
+ ## Example Usage
306
+
307
+ ```python
308
+ import pulumi
309
+ import pulumi_gitlab as gitlab
310
+
311
+ # Create a project
312
+ example = gitlab.Project("example",
313
+ name="example",
314
+ description="An example project",
315
+ visibility_level="public")
316
+ # Create source issue
317
+ source = gitlab.ProjectIssue("source",
318
+ project=example.id,
319
+ title="Source Issue")
320
+ # Create target issue
321
+ target = gitlab.ProjectIssue("target",
322
+ project=example.id,
323
+ title="Target Issue")
324
+ # Link issues with "relates_to" link type (default)
325
+ relates_to = gitlab.ProjectIssueLink("relates_to",
326
+ project=example.id,
327
+ issue_iid=source.iid,
328
+ target_project_id=example.id,
329
+ target_issue_iid=target.iid,
330
+ link_type="relates_to")
331
+ # Cross-project linking example
332
+ other_project = gitlab.Project("other_project",
333
+ name="other_project",
334
+ description="Another project for cross-project linking")
335
+ cross_target = gitlab.ProjectIssue("cross_target",
336
+ project=other_project.id,
337
+ title="Cross-Project Target Issue")
338
+ cross_project_relates_to = gitlab.ProjectIssueLink("cross_project_relates_to",
339
+ project=example.id,
340
+ issue_iid=source.iid,
341
+ target_project_id=other_project.id,
342
+ target_issue_iid=cross_target.iid,
343
+ link_type="relates_to")
344
+ ```
345
+
346
+ ## Import
347
+
348
+ Starting in Terraform v1.5.0, you can use an import block to import `gitlab_project_issue_link`. For example:
349
+
350
+ terraform
351
+
352
+ import {
353
+
354
+ to = gitlab_project_issue_link.example
355
+
356
+ id = "see CLI command below for ID"
357
+
358
+ }
359
+
360
+ Importing using the CLI is supported with the following syntax:
361
+
362
+ You can import this resource with an id made up of `{project-id}:{source-issue-iid}:{target-issue-iid}`, e.g.
363
+
364
+ ```sh
365
+ $ pulumi import gitlab:index/projectIssueLink:ProjectIssueLink example 42:1001:1002
366
+ ```
367
+
368
+ :param str resource_name: The name of the resource.
369
+ :param ProjectIssueLinkArgs args: The arguments to use to populate this resource's properties.
370
+ :param pulumi.ResourceOptions opts: Options for the resource.
371
+ """
372
+ ...
373
+ def __init__(__self__, resource_name: str, *args, **kwargs):
374
+ resource_args, opts = _utilities.get_resource_args_opts(ProjectIssueLinkArgs, pulumi.ResourceOptions, *args, **kwargs)
375
+ if resource_args is not None:
376
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
377
+ else:
378
+ __self__._internal_init(resource_name, *args, **kwargs)
379
+
380
+ def _internal_init(__self__,
381
+ resource_name: str,
382
+ opts: Optional[pulumi.ResourceOptions] = None,
383
+ issue_iid: Optional[pulumi.Input[_builtins.int]] = None,
384
+ link_type: Optional[pulumi.Input[_builtins.str]] = None,
385
+ project: Optional[pulumi.Input[_builtins.str]] = None,
386
+ target_issue_iid: Optional[pulumi.Input[_builtins.int]] = None,
387
+ target_project_id: Optional[pulumi.Input[_builtins.str]] = None,
388
+ __props__=None):
389
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
390
+ if not isinstance(opts, pulumi.ResourceOptions):
391
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
392
+ if opts.id is None:
393
+ if __props__ is not None:
394
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
395
+ __props__ = ProjectIssueLinkArgs.__new__(ProjectIssueLinkArgs)
396
+
397
+ if issue_iid is None and not opts.urn:
398
+ raise TypeError("Missing required property 'issue_iid'")
399
+ __props__.__dict__["issue_iid"] = issue_iid
400
+ if link_type is None and not opts.urn:
401
+ raise TypeError("Missing required property 'link_type'")
402
+ __props__.__dict__["link_type"] = link_type
403
+ if project is None and not opts.urn:
404
+ raise TypeError("Missing required property 'project'")
405
+ __props__.__dict__["project"] = project
406
+ if target_issue_iid is None and not opts.urn:
407
+ raise TypeError("Missing required property 'target_issue_iid'")
408
+ __props__.__dict__["target_issue_iid"] = target_issue_iid
409
+ if target_project_id is None and not opts.urn:
410
+ raise TypeError("Missing required property 'target_project_id'")
411
+ __props__.__dict__["target_project_id"] = target_project_id
412
+ __props__.__dict__["issue_link_id"] = None
413
+ super(ProjectIssueLink, __self__).__init__(
414
+ 'gitlab:index/projectIssueLink:ProjectIssueLink',
415
+ resource_name,
416
+ __props__,
417
+ opts)
418
+
419
+ @staticmethod
420
+ def get(resource_name: str,
421
+ id: pulumi.Input[str],
422
+ opts: Optional[pulumi.ResourceOptions] = None,
423
+ issue_iid: Optional[pulumi.Input[_builtins.int]] = None,
424
+ issue_link_id: Optional[pulumi.Input[_builtins.int]] = None,
425
+ link_type: Optional[pulumi.Input[_builtins.str]] = None,
426
+ project: Optional[pulumi.Input[_builtins.str]] = None,
427
+ target_issue_iid: Optional[pulumi.Input[_builtins.int]] = None,
428
+ target_project_id: Optional[pulumi.Input[_builtins.str]] = None) -> 'ProjectIssueLink':
429
+ """
430
+ Get an existing ProjectIssueLink resource's state with the given name, id, and optional extra
431
+ properties used to qualify the lookup.
432
+
433
+ :param str resource_name: The unique name of the resulting resource.
434
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
435
+ :param pulumi.ResourceOptions opts: Options for the resource.
436
+ :param pulumi.Input[_builtins.int] issue_iid: The internal ID of a project's issue.
437
+ :param pulumi.Input[_builtins.int] issue_link_id: ID of an issue relationship.
438
+ :param pulumi.Input[_builtins.str] link_type: Type of the relationship. Valid values are `relates_to`, `blocks`, `is_blocked_by`.
439
+ :param pulumi.Input[_builtins.str] project: The ID or URL-encoded path of the project.
440
+ :param pulumi.Input[_builtins.int] target_issue_iid: The internal ID of the target issue.
441
+ :param pulumi.Input[_builtins.str] target_project_id: The ID or URL-encoded path of the target project.
442
+ """
443
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
444
+
445
+ __props__ = _ProjectIssueLinkState.__new__(_ProjectIssueLinkState)
446
+
447
+ __props__.__dict__["issue_iid"] = issue_iid
448
+ __props__.__dict__["issue_link_id"] = issue_link_id
449
+ __props__.__dict__["link_type"] = link_type
450
+ __props__.__dict__["project"] = project
451
+ __props__.__dict__["target_issue_iid"] = target_issue_iid
452
+ __props__.__dict__["target_project_id"] = target_project_id
453
+ return ProjectIssueLink(resource_name, opts=opts, __props__=__props__)
454
+
455
+ @_builtins.property
456
+ @pulumi.getter(name="issueIid")
457
+ def issue_iid(self) -> pulumi.Output[_builtins.int]:
458
+ """
459
+ The internal ID of a project's issue.
460
+ """
461
+ return pulumi.get(self, "issue_iid")
462
+
463
+ @_builtins.property
464
+ @pulumi.getter(name="issueLinkId")
465
+ def issue_link_id(self) -> pulumi.Output[_builtins.int]:
466
+ """
467
+ ID of an issue relationship.
468
+ """
469
+ return pulumi.get(self, "issue_link_id")
470
+
471
+ @_builtins.property
472
+ @pulumi.getter(name="linkType")
473
+ def link_type(self) -> pulumi.Output[_builtins.str]:
474
+ """
475
+ Type of the relationship. Valid values are `relates_to`, `blocks`, `is_blocked_by`.
476
+ """
477
+ return pulumi.get(self, "link_type")
478
+
479
+ @_builtins.property
480
+ @pulumi.getter
481
+ def project(self) -> pulumi.Output[_builtins.str]:
482
+ """
483
+ The ID or URL-encoded path of the project.
484
+ """
485
+ return pulumi.get(self, "project")
486
+
487
+ @_builtins.property
488
+ @pulumi.getter(name="targetIssueIid")
489
+ def target_issue_iid(self) -> pulumi.Output[_builtins.int]:
490
+ """
491
+ The internal ID of the target issue.
492
+ """
493
+ return pulumi.get(self, "target_issue_iid")
494
+
495
+ @_builtins.property
496
+ @pulumi.getter(name="targetProjectId")
497
+ def target_project_id(self) -> pulumi.Output[_builtins.str]:
498
+ """
499
+ The ID or URL-encoded path of the target project.
500
+ """
501
+ return pulumi.get(self, "target_project_id")
502
+
@@ -145,6 +145,8 @@ class ProjectJobTokenScope(pulumi.CustomResource):
145
145
 
146
146
  **Upstream API**: [GitLab REST API docs](https://docs.gitlab.com/api/project_job_token_scopes/)
147
147
 
148
+ ## Example Usage
149
+
148
150
  ## Import
149
151
 
150
152
  Starting in Terraform v1.5.0, you can use an import block to import `gitlab_project_job_token_scope`. For example:
@@ -161,10 +163,18 @@ class ProjectJobTokenScope(pulumi.CustomResource):
161
163
 
162
164
  Importing using the CLI is supported with the following syntax:
163
165
 
164
- GitLab project job token scopes can be imported using an id made up of `projectId:targetProjectId`, e.g.
166
+ GitLab project job token scopes can be imported using an id made up of `projectId:type:targetId`, e.g.
167
+
168
+ For target_project_id:
169
+
170
+ ```sh
171
+ $ pulumi import gitlab:index/projectJobTokenScope:ProjectJobTokenScope bar 123:project:321
172
+ ```
173
+
174
+ For target_group_id:
165
175
 
166
176
  ```sh
167
- $ pulumi import gitlab:index/projectJobTokenScope:ProjectJobTokenScope bar 123:321
177
+ $ pulumi import gitlab:index/projectJobTokenScope:ProjectJobTokenScope bar 123:group:321
168
178
  ```
169
179
 
170
180
  :param str resource_name: The name of the resource.
@@ -187,6 +197,8 @@ class ProjectJobTokenScope(pulumi.CustomResource):
187
197
 
188
198
  **Upstream API**: [GitLab REST API docs](https://docs.gitlab.com/api/project_job_token_scopes/)
189
199
 
200
+ ## Example Usage
201
+
190
202
  ## Import
191
203
 
192
204
  Starting in Terraform v1.5.0, you can use an import block to import `gitlab_project_job_token_scope`. For example:
@@ -203,10 +215,18 @@ class ProjectJobTokenScope(pulumi.CustomResource):
203
215
 
204
216
  Importing using the CLI is supported with the following syntax:
205
217
 
206
- GitLab project job token scopes can be imported using an id made up of `projectId:targetProjectId`, e.g.
218
+ GitLab project job token scopes can be imported using an id made up of `projectId:type:targetId`, e.g.
219
+
220
+ For target_project_id:
221
+
222
+ ```sh
223
+ $ pulumi import gitlab:index/projectJobTokenScope:ProjectJobTokenScope bar 123:project:321
224
+ ```
225
+
226
+ For target_group_id:
207
227
 
208
228
  ```sh
209
- $ pulumi import gitlab:index/projectJobTokenScope:ProjectJobTokenScope bar 123:321
229
+ $ pulumi import gitlab:index/projectJobTokenScope:ProjectJobTokenScope bar 123:group:321
210
230
  ```
211
231
 
212
232
  :param str resource_name: The name of the resource.