pulumi-gcp 8.34.0a1749484438__py3-none-any.whl → 8.34.0a1749648575__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 (65) hide show
  1. pulumi_gcp/__init__.py +32 -0
  2. pulumi_gcp/alloydb/cluster.py +16 -64
  3. pulumi_gcp/apigee/_inputs.py +89 -0
  4. pulumi_gcp/apigee/environment.py +68 -2
  5. pulumi_gcp/apigee/outputs.py +88 -0
  6. pulumi_gcp/apihub/__init__.py +1 -0
  7. pulumi_gcp/apihub/_inputs.py +184 -0
  8. pulumi_gcp/apihub/curation.py +812 -0
  9. pulumi_gcp/apihub/outputs.py +165 -0
  10. pulumi_gcp/beyondcorp/get_security_gateway.py +12 -1
  11. pulumi_gcp/beyondcorp/security_gateway.py +28 -0
  12. pulumi_gcp/cloudrunv2/_inputs.py +463 -0
  13. pulumi_gcp/cloudrunv2/outputs.py +581 -1
  14. pulumi_gcp/cloudrunv2/worker_pool.py +0 -8
  15. pulumi_gcp/colab/runtime_template.py +4 -26
  16. pulumi_gcp/compute/__init__.py +3 -0
  17. pulumi_gcp/compute/_inputs.py +1551 -0
  18. pulumi_gcp/compute/interconnect.py +32 -0
  19. pulumi_gcp/compute/interconnect_attachment.py +28 -0
  20. pulumi_gcp/compute/interconnect_attachment_group.py +636 -0
  21. pulumi_gcp/compute/interconnect_group.py +586 -0
  22. pulumi_gcp/compute/outputs.py +1087 -0
  23. pulumi_gcp/compute/snapshot_settings.py +285 -0
  24. pulumi_gcp/container/_inputs.py +51 -18
  25. pulumi_gcp/container/cluster.py +47 -0
  26. pulumi_gcp/container/get_cluster.py +12 -1
  27. pulumi_gcp/container/outputs.py +71 -16
  28. pulumi_gcp/dataplex/_inputs.py +20 -0
  29. pulumi_gcp/dataplex/datascan.py +2 -0
  30. pulumi_gcp/dataplex/outputs.py +15 -1
  31. pulumi_gcp/eventarc/_inputs.py +12 -5
  32. pulumi_gcp/eventarc/outputs.py +8 -3
  33. pulumi_gcp/eventarc/pipeline.py +0 -12
  34. pulumi_gcp/gemini/data_sharing_with_google_setting.py +58 -9
  35. pulumi_gcp/gemini/data_sharing_with_google_setting_binding.py +11 -16
  36. pulumi_gcp/gemini/gemini_gcp_enablement_setting.py +51 -2
  37. pulumi_gcp/gemini/gemini_gcp_enablement_setting_binding.py +11 -16
  38. pulumi_gcp/gkehub/_inputs.py +84 -7
  39. pulumi_gcp/gkehub/feature.py +38 -0
  40. pulumi_gcp/gkehub/outputs.py +102 -7
  41. pulumi_gcp/gkehub/scope_rbac_role_binding.py +54 -2
  42. pulumi_gcp/gkeonprem/_inputs.py +54 -0
  43. pulumi_gcp/gkeonprem/outputs.py +49 -0
  44. pulumi_gcp/gkeonprem/vmware_admin_cluster.py +71 -0
  45. pulumi_gcp/iam/workload_identity_pool_namespace.py +4 -4
  46. pulumi_gcp/iap/tunnel_dest_group.py +2 -2
  47. pulumi_gcp/integrationconnectors/managed_zone.py +8 -8
  48. pulumi_gcp/managedkafka/connect_cluster.py +4 -4
  49. pulumi_gcp/managedkafka/connector.py +4 -4
  50. pulumi_gcp/networkconnectivity/spoke.py +14 -14
  51. pulumi_gcp/networksecurity/backend_authentication_config.py +64 -0
  52. pulumi_gcp/orgpolicy/policy.py +2 -2
  53. pulumi_gcp/pubsub/_inputs.py +392 -0
  54. pulumi_gcp/pubsub/get_subscription.py +12 -1
  55. pulumi_gcp/pubsub/get_topic.py +12 -1
  56. pulumi_gcp/pubsub/outputs.py +548 -0
  57. pulumi_gcp/pubsub/subscription.py +67 -6
  58. pulumi_gcp/pubsub/topic.py +61 -0
  59. pulumi_gcp/pulumi-plugin.json +1 -1
  60. pulumi_gcp/vertex/ai_endpoint.py +4 -4
  61. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +4 -4
  62. {pulumi_gcp-8.34.0a1749484438.dist-info → pulumi_gcp-8.34.0a1749648575.dist-info}/METADATA +1 -1
  63. {pulumi_gcp-8.34.0a1749484438.dist-info → pulumi_gcp-8.34.0a1749648575.dist-info}/RECORD +65 -61
  64. {pulumi_gcp-8.34.0a1749484438.dist-info → pulumi_gcp-8.34.0a1749648575.dist-info}/WHEEL +0 -0
  65. {pulumi_gcp-8.34.0a1749484438.dist-info → pulumi_gcp-8.34.0a1749648575.dist-info}/top_level.txt +0 -0
pulumi_gcp/__init__.py CHANGED
@@ -974,6 +974,14 @@ _utilities.register(
974
974
  "gcp:apihub/apiHubInstance:ApiHubInstance": "ApiHubInstance"
975
975
  }
976
976
  },
977
+ {
978
+ "pkg": "gcp",
979
+ "mod": "apihub/curation",
980
+ "fqn": "pulumi_gcp.apihub",
981
+ "classes": {
982
+ "gcp:apihub/curation:Curation": "Curation"
983
+ }
984
+ },
977
985
  {
978
986
  "pkg": "gcp",
979
987
  "mod": "apihub/hostProjectRegistration",
@@ -3038,6 +3046,22 @@ _utilities.register(
3038
3046
  "gcp:compute/interconnectAttachment:InterconnectAttachment": "InterconnectAttachment"
3039
3047
  }
3040
3048
  },
3049
+ {
3050
+ "pkg": "gcp",
3051
+ "mod": "compute/interconnectAttachmentGroup",
3052
+ "fqn": "pulumi_gcp.compute",
3053
+ "classes": {
3054
+ "gcp:compute/interconnectAttachmentGroup:InterconnectAttachmentGroup": "InterconnectAttachmentGroup"
3055
+ }
3056
+ },
3057
+ {
3058
+ "pkg": "gcp",
3059
+ "mod": "compute/interconnectGroup",
3060
+ "fqn": "pulumi_gcp.compute",
3061
+ "classes": {
3062
+ "gcp:compute/interconnectGroup:InterconnectGroup": "InterconnectGroup"
3063
+ }
3064
+ },
3041
3065
  {
3042
3066
  "pkg": "gcp",
3043
3067
  "mod": "compute/machineImage",
@@ -3718,6 +3742,14 @@ _utilities.register(
3718
3742
  "gcp:compute/snapshotIamPolicy:SnapshotIamPolicy": "SnapshotIamPolicy"
3719
3743
  }
3720
3744
  },
3745
+ {
3746
+ "pkg": "gcp",
3747
+ "mod": "compute/snapshotSettings",
3748
+ "fqn": "pulumi_gcp.compute",
3749
+ "classes": {
3750
+ "gcp:compute/snapshotSettings:SnapshotSettings": "SnapshotSettings"
3751
+ }
3752
+ },
3721
3753
  {
3722
3754
  "pkg": "gcp",
3723
3755
  "mod": "compute/storagePool",
@@ -1116,36 +1116,24 @@ class Cluster(pulumi.CustomResource):
1116
1116
  import pulumi
1117
1117
  import pulumi_gcp as gcp
1118
1118
 
1119
- default_network = gcp.compute.Network("default", name="alloydb-network")
1119
+ default = gcp.compute.get_network(name="alloydb-network")
1120
1120
  default_cluster = gcp.alloydb.Cluster("default",
1121
1121
  cluster_id="alloydb-cluster",
1122
1122
  location="us-central1",
1123
1123
  network_config={
1124
- "network": default_network.id,
1124
+ "network": default.id,
1125
1125
  },
1126
1126
  database_version="POSTGRES_14",
1127
1127
  initial_user={
1128
1128
  "password": "alloydb-cluster",
1129
1129
  })
1130
- private_ip_alloc = gcp.compute.GlobalAddress("private_ip_alloc",
1131
- name="alloydb-cluster",
1132
- address_type="INTERNAL",
1133
- purpose="VPC_PEERING",
1134
- prefix_length=16,
1135
- network=default_network.id)
1136
- vpc_connection = gcp.servicenetworking.Connection("vpc_connection",
1137
- network=default_network.id,
1138
- service="servicenetworking.googleapis.com",
1139
- reserved_peering_ranges=[private_ip_alloc.name])
1140
- default = gcp.alloydb.Instance("default",
1130
+ default_instance = gcp.alloydb.Instance("default",
1141
1131
  cluster=default_cluster.name,
1142
1132
  instance_id="alloydb-instance",
1143
1133
  instance_type="PRIMARY",
1144
1134
  machine_config={
1145
1135
  "cpu_count": 2,
1146
- },
1147
- opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))
1148
- project = gcp.organizations.get_project()
1136
+ })
1149
1137
  ```
1150
1138
  ### Alloydb Cluster After Upgrade
1151
1139
 
@@ -1153,36 +1141,24 @@ class Cluster(pulumi.CustomResource):
1153
1141
  import pulumi
1154
1142
  import pulumi_gcp as gcp
1155
1143
 
1156
- default_network = gcp.compute.Network("default", name="alloydb-network")
1144
+ default = gcp.compute.get_network(name="alloydb-network")
1157
1145
  default_cluster = gcp.alloydb.Cluster("default",
1158
1146
  cluster_id="alloydb-cluster",
1159
1147
  location="us-central1",
1160
1148
  network_config={
1161
- "network": default_network.id,
1149
+ "network": default.id,
1162
1150
  },
1163
1151
  database_version="POSTGRES_15",
1164
1152
  initial_user={
1165
1153
  "password": "alloydb-cluster",
1166
1154
  })
1167
- private_ip_alloc = gcp.compute.GlobalAddress("private_ip_alloc",
1168
- name="alloydb-cluster",
1169
- address_type="INTERNAL",
1170
- purpose="VPC_PEERING",
1171
- prefix_length=16,
1172
- network=default_network.id)
1173
- vpc_connection = gcp.servicenetworking.Connection("vpc_connection",
1174
- network=default_network.id,
1175
- service="servicenetworking.googleapis.com",
1176
- reserved_peering_ranges=[private_ip_alloc.name])
1177
- default = gcp.alloydb.Instance("default",
1155
+ default_instance = gcp.alloydb.Instance("default",
1178
1156
  cluster=default_cluster.name,
1179
1157
  instance_id="alloydb-instance",
1180
1158
  instance_type="PRIMARY",
1181
1159
  machine_config={
1182
1160
  "cpu_count": 2,
1183
- },
1184
- opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))
1185
- project = gcp.organizations.get_project()
1161
+ })
1186
1162
  ```
1187
1163
  ### Alloydb Cluster Full
1188
1164
 
@@ -1394,36 +1370,24 @@ class Cluster(pulumi.CustomResource):
1394
1370
  import pulumi
1395
1371
  import pulumi_gcp as gcp
1396
1372
 
1397
- default_network = gcp.compute.Network("default", name="alloydb-network")
1373
+ default = gcp.compute.get_network(name="alloydb-network")
1398
1374
  default_cluster = gcp.alloydb.Cluster("default",
1399
1375
  cluster_id="alloydb-cluster",
1400
1376
  location="us-central1",
1401
1377
  network_config={
1402
- "network": default_network.id,
1378
+ "network": default.id,
1403
1379
  },
1404
1380
  database_version="POSTGRES_14",
1405
1381
  initial_user={
1406
1382
  "password": "alloydb-cluster",
1407
1383
  })
1408
- private_ip_alloc = gcp.compute.GlobalAddress("private_ip_alloc",
1409
- name="alloydb-cluster",
1410
- address_type="INTERNAL",
1411
- purpose="VPC_PEERING",
1412
- prefix_length=16,
1413
- network=default_network.id)
1414
- vpc_connection = gcp.servicenetworking.Connection("vpc_connection",
1415
- network=default_network.id,
1416
- service="servicenetworking.googleapis.com",
1417
- reserved_peering_ranges=[private_ip_alloc.name])
1418
- default = gcp.alloydb.Instance("default",
1384
+ default_instance = gcp.alloydb.Instance("default",
1419
1385
  cluster=default_cluster.name,
1420
1386
  instance_id="alloydb-instance",
1421
1387
  instance_type="PRIMARY",
1422
1388
  machine_config={
1423
1389
  "cpu_count": 2,
1424
- },
1425
- opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))
1426
- project = gcp.organizations.get_project()
1390
+ })
1427
1391
  ```
1428
1392
  ### Alloydb Cluster After Upgrade
1429
1393
 
@@ -1431,36 +1395,24 @@ class Cluster(pulumi.CustomResource):
1431
1395
  import pulumi
1432
1396
  import pulumi_gcp as gcp
1433
1397
 
1434
- default_network = gcp.compute.Network("default", name="alloydb-network")
1398
+ default = gcp.compute.get_network(name="alloydb-network")
1435
1399
  default_cluster = gcp.alloydb.Cluster("default",
1436
1400
  cluster_id="alloydb-cluster",
1437
1401
  location="us-central1",
1438
1402
  network_config={
1439
- "network": default_network.id,
1403
+ "network": default.id,
1440
1404
  },
1441
1405
  database_version="POSTGRES_15",
1442
1406
  initial_user={
1443
1407
  "password": "alloydb-cluster",
1444
1408
  })
1445
- private_ip_alloc = gcp.compute.GlobalAddress("private_ip_alloc",
1446
- name="alloydb-cluster",
1447
- address_type="INTERNAL",
1448
- purpose="VPC_PEERING",
1449
- prefix_length=16,
1450
- network=default_network.id)
1451
- vpc_connection = gcp.servicenetworking.Connection("vpc_connection",
1452
- network=default_network.id,
1453
- service="servicenetworking.googleapis.com",
1454
- reserved_peering_ranges=[private_ip_alloc.name])
1455
- default = gcp.alloydb.Instance("default",
1409
+ default_instance = gcp.alloydb.Instance("default",
1456
1410
  cluster=default_cluster.name,
1457
1411
  instance_id="alloydb-instance",
1458
1412
  instance_type="PRIMARY",
1459
1413
  machine_config={
1460
1414
  "cpu_count": 2,
1461
- },
1462
- opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))
1463
- project = gcp.organizations.get_project()
1415
+ })
1464
1416
  ```
1465
1417
  ### Alloydb Cluster Full
1466
1418
 
@@ -36,6 +36,10 @@ __all__ = [
36
36
  'DeveloperAttributeArgsDict',
37
37
  'DnsZonePeeringConfigArgs',
38
38
  'DnsZonePeeringConfigArgsDict',
39
+ 'EnvironmentClientIpResolutionConfigArgs',
40
+ 'EnvironmentClientIpResolutionConfigArgsDict',
41
+ 'EnvironmentClientIpResolutionConfigHeaderIndexAlgorithmArgs',
42
+ 'EnvironmentClientIpResolutionConfigHeaderIndexAlgorithmArgsDict',
39
43
  'EnvironmentIamBindingConditionArgs',
40
44
  'EnvironmentIamBindingConditionArgsDict',
41
45
  'EnvironmentIamMemberConditionArgs',
@@ -645,6 +649,91 @@ class DnsZonePeeringConfigArgs:
645
649
  pulumi.set(self, "target_project_id", value)
646
650
 
647
651
 
652
+ if not MYPY:
653
+ class EnvironmentClientIpResolutionConfigArgsDict(TypedDict):
654
+ header_index_algorithm: NotRequired[pulumi.Input['EnvironmentClientIpResolutionConfigHeaderIndexAlgorithmArgsDict']]
655
+ """
656
+ Resolves the client ip based on a custom header.
657
+ Structure is documented below.
658
+ """
659
+ elif False:
660
+ EnvironmentClientIpResolutionConfigArgsDict: TypeAlias = Mapping[str, Any]
661
+
662
+ @pulumi.input_type
663
+ class EnvironmentClientIpResolutionConfigArgs:
664
+ def __init__(__self__, *,
665
+ header_index_algorithm: Optional[pulumi.Input['EnvironmentClientIpResolutionConfigHeaderIndexAlgorithmArgs']] = None):
666
+ """
667
+ :param pulumi.Input['EnvironmentClientIpResolutionConfigHeaderIndexAlgorithmArgs'] header_index_algorithm: Resolves the client ip based on a custom header.
668
+ Structure is documented below.
669
+ """
670
+ if header_index_algorithm is not None:
671
+ pulumi.set(__self__, "header_index_algorithm", header_index_algorithm)
672
+
673
+ @property
674
+ @pulumi.getter(name="headerIndexAlgorithm")
675
+ def header_index_algorithm(self) -> Optional[pulumi.Input['EnvironmentClientIpResolutionConfigHeaderIndexAlgorithmArgs']]:
676
+ """
677
+ Resolves the client ip based on a custom header.
678
+ Structure is documented below.
679
+ """
680
+ return pulumi.get(self, "header_index_algorithm")
681
+
682
+ @header_index_algorithm.setter
683
+ def header_index_algorithm(self, value: Optional[pulumi.Input['EnvironmentClientIpResolutionConfigHeaderIndexAlgorithmArgs']]):
684
+ pulumi.set(self, "header_index_algorithm", value)
685
+
686
+
687
+ if not MYPY:
688
+ class EnvironmentClientIpResolutionConfigHeaderIndexAlgorithmArgsDict(TypedDict):
689
+ ip_header_index: pulumi.Input[builtins.int]
690
+ """
691
+ The index of the ip in the header. Positive indices 0, 1, 2, 3 chooses indices from the left (first ips). Negative indices -1, -2, -3 chooses indices from the right (last ips).
692
+ """
693
+ ip_header_name: pulumi.Input[builtins.str]
694
+ """
695
+ The name of the header to extract the client ip from. We are currently only supporting the X-Forwarded-For header.
696
+ """
697
+ elif False:
698
+ EnvironmentClientIpResolutionConfigHeaderIndexAlgorithmArgsDict: TypeAlias = Mapping[str, Any]
699
+
700
+ @pulumi.input_type
701
+ class EnvironmentClientIpResolutionConfigHeaderIndexAlgorithmArgs:
702
+ def __init__(__self__, *,
703
+ ip_header_index: pulumi.Input[builtins.int],
704
+ ip_header_name: pulumi.Input[builtins.str]):
705
+ """
706
+ :param pulumi.Input[builtins.int] ip_header_index: The index of the ip in the header. Positive indices 0, 1, 2, 3 chooses indices from the left (first ips). Negative indices -1, -2, -3 chooses indices from the right (last ips).
707
+ :param pulumi.Input[builtins.str] ip_header_name: The name of the header to extract the client ip from. We are currently only supporting the X-Forwarded-For header.
708
+ """
709
+ pulumi.set(__self__, "ip_header_index", ip_header_index)
710
+ pulumi.set(__self__, "ip_header_name", ip_header_name)
711
+
712
+ @property
713
+ @pulumi.getter(name="ipHeaderIndex")
714
+ def ip_header_index(self) -> pulumi.Input[builtins.int]:
715
+ """
716
+ The index of the ip in the header. Positive indices 0, 1, 2, 3 chooses indices from the left (first ips). Negative indices -1, -2, -3 chooses indices from the right (last ips).
717
+ """
718
+ return pulumi.get(self, "ip_header_index")
719
+
720
+ @ip_header_index.setter
721
+ def ip_header_index(self, value: pulumi.Input[builtins.int]):
722
+ pulumi.set(self, "ip_header_index", value)
723
+
724
+ @property
725
+ @pulumi.getter(name="ipHeaderName")
726
+ def ip_header_name(self) -> pulumi.Input[builtins.str]:
727
+ """
728
+ The name of the header to extract the client ip from. We are currently only supporting the X-Forwarded-For header.
729
+ """
730
+ return pulumi.get(self, "ip_header_name")
731
+
732
+ @ip_header_name.setter
733
+ def ip_header_name(self, value: pulumi.Input[builtins.str]):
734
+ pulumi.set(self, "ip_header_name", value)
735
+
736
+
648
737
  if not MYPY:
649
738
  class EnvironmentIamBindingConditionArgsDict(TypedDict):
650
739
  expression: pulumi.Input[builtins.str]
@@ -24,6 +24,7 @@ class EnvironmentArgs:
24
24
  def __init__(__self__, *,
25
25
  org_id: pulumi.Input[builtins.str],
26
26
  api_proxy_type: Optional[pulumi.Input[builtins.str]] = None,
27
+ client_ip_resolution_config: Optional[pulumi.Input['EnvironmentClientIpResolutionConfigArgs']] = None,
27
28
  deployment_type: Optional[pulumi.Input[builtins.str]] = None,
28
29
  description: Optional[pulumi.Input[builtins.str]] = None,
29
30
  display_name: Optional[pulumi.Input[builtins.str]] = None,
@@ -42,6 +43,8 @@ class EnvironmentArgs:
42
43
  :param pulumi.Input[builtins.str] api_proxy_type: Optional. API Proxy type supported by the environment. The type can be set when creating
43
44
  the Environment and cannot be changed.
44
45
  Possible values are: `API_PROXY_TYPE_UNSPECIFIED`, `PROGRAMMABLE`, `CONFIGURABLE`.
46
+ :param pulumi.Input['EnvironmentClientIpResolutionConfigArgs'] client_ip_resolution_config: The algorithm to resolve IP. This will affect Analytics, API Security, and other features that use the client ip. To remove a client ip resolution config, update the field to an empty value. Example: '{ "clientIpResolutionConfig" = {} }' For more information, see: https://cloud.google.com/apigee/docs/api-platform/system-administration/client-ip-resolution
47
+ Structure is documented below.
45
48
  :param pulumi.Input[builtins.str] deployment_type: Optional. Deployment type supported by the environment. The deployment type can be
46
49
  set when creating the environment and cannot be changed. When you enable archive
47
50
  deployment, you will be prevented from performing a subset of actions within the
@@ -67,6 +70,8 @@ class EnvironmentArgs:
67
70
  pulumi.set(__self__, "org_id", org_id)
68
71
  if api_proxy_type is not None:
69
72
  pulumi.set(__self__, "api_proxy_type", api_proxy_type)
73
+ if client_ip_resolution_config is not None:
74
+ pulumi.set(__self__, "client_ip_resolution_config", client_ip_resolution_config)
70
75
  if deployment_type is not None:
71
76
  pulumi.set(__self__, "deployment_type", deployment_type)
72
77
  if description is not None:
@@ -114,6 +119,19 @@ class EnvironmentArgs:
114
119
  def api_proxy_type(self, value: Optional[pulumi.Input[builtins.str]]):
115
120
  pulumi.set(self, "api_proxy_type", value)
116
121
 
122
+ @property
123
+ @pulumi.getter(name="clientIpResolutionConfig")
124
+ def client_ip_resolution_config(self) -> Optional[pulumi.Input['EnvironmentClientIpResolutionConfigArgs']]:
125
+ """
126
+ The algorithm to resolve IP. This will affect Analytics, API Security, and other features that use the client ip. To remove a client ip resolution config, update the field to an empty value. Example: '{ "clientIpResolutionConfig" = {} }' For more information, see: https://cloud.google.com/apigee/docs/api-platform/system-administration/client-ip-resolution
127
+ Structure is documented below.
128
+ """
129
+ return pulumi.get(self, "client_ip_resolution_config")
130
+
131
+ @client_ip_resolution_config.setter
132
+ def client_ip_resolution_config(self, value: Optional[pulumi.Input['EnvironmentClientIpResolutionConfigArgs']]):
133
+ pulumi.set(self, "client_ip_resolution_config", value)
134
+
117
135
  @property
118
136
  @pulumi.getter(name="deploymentType")
119
137
  def deployment_type(self) -> Optional[pulumi.Input[builtins.str]]:
@@ -228,6 +246,7 @@ class EnvironmentArgs:
228
246
  class _EnvironmentState:
229
247
  def __init__(__self__, *,
230
248
  api_proxy_type: Optional[pulumi.Input[builtins.str]] = None,
249
+ client_ip_resolution_config: Optional[pulumi.Input['EnvironmentClientIpResolutionConfigArgs']] = None,
231
250
  deployment_type: Optional[pulumi.Input[builtins.str]] = None,
232
251
  description: Optional[pulumi.Input[builtins.str]] = None,
233
252
  display_name: Optional[pulumi.Input[builtins.str]] = None,
@@ -242,6 +261,8 @@ class _EnvironmentState:
242
261
  :param pulumi.Input[builtins.str] api_proxy_type: Optional. API Proxy type supported by the environment. The type can be set when creating
243
262
  the Environment and cannot be changed.
244
263
  Possible values are: `API_PROXY_TYPE_UNSPECIFIED`, `PROGRAMMABLE`, `CONFIGURABLE`.
264
+ :param pulumi.Input['EnvironmentClientIpResolutionConfigArgs'] client_ip_resolution_config: The algorithm to resolve IP. This will affect Analytics, API Security, and other features that use the client ip. To remove a client ip resolution config, update the field to an empty value. Example: '{ "clientIpResolutionConfig" = {} }' For more information, see: https://cloud.google.com/apigee/docs/api-platform/system-administration/client-ip-resolution
265
+ Structure is documented below.
245
266
  :param pulumi.Input[builtins.str] deployment_type: Optional. Deployment type supported by the environment. The deployment type can be
246
267
  set when creating the environment and cannot be changed. When you enable archive
247
268
  deployment, you will be prevented from performing a subset of actions within the
@@ -271,6 +292,8 @@ class _EnvironmentState:
271
292
  """
272
293
  if api_proxy_type is not None:
273
294
  pulumi.set(__self__, "api_proxy_type", api_proxy_type)
295
+ if client_ip_resolution_config is not None:
296
+ pulumi.set(__self__, "client_ip_resolution_config", client_ip_resolution_config)
274
297
  if deployment_type is not None:
275
298
  pulumi.set(__self__, "deployment_type", deployment_type)
276
299
  if description is not None:
@@ -304,6 +327,19 @@ class _EnvironmentState:
304
327
  def api_proxy_type(self, value: Optional[pulumi.Input[builtins.str]]):
305
328
  pulumi.set(self, "api_proxy_type", value)
306
329
 
330
+ @property
331
+ @pulumi.getter(name="clientIpResolutionConfig")
332
+ def client_ip_resolution_config(self) -> Optional[pulumi.Input['EnvironmentClientIpResolutionConfigArgs']]:
333
+ """
334
+ The algorithm to resolve IP. This will affect Analytics, API Security, and other features that use the client ip. To remove a client ip resolution config, update the field to an empty value. Example: '{ "clientIpResolutionConfig" = {} }' For more information, see: https://cloud.google.com/apigee/docs/api-platform/system-administration/client-ip-resolution
335
+ Structure is documented below.
336
+ """
337
+ return pulumi.get(self, "client_ip_resolution_config")
338
+
339
+ @client_ip_resolution_config.setter
340
+ def client_ip_resolution_config(self, value: Optional[pulumi.Input['EnvironmentClientIpResolutionConfigArgs']]):
341
+ pulumi.set(self, "client_ip_resolution_config", value)
342
+
307
343
  @property
308
344
  @pulumi.getter(name="deploymentType")
309
345
  def deployment_type(self) -> Optional[pulumi.Input[builtins.str]]:
@@ -437,6 +473,7 @@ class Environment(pulumi.CustomResource):
437
473
  resource_name: str,
438
474
  opts: Optional[pulumi.ResourceOptions] = None,
439
475
  api_proxy_type: Optional[pulumi.Input[builtins.str]] = None,
476
+ client_ip_resolution_config: Optional[pulumi.Input[Union['EnvironmentClientIpResolutionConfigArgs', 'EnvironmentClientIpResolutionConfigArgsDict']]] = None,
440
477
  deployment_type: Optional[pulumi.Input[builtins.str]] = None,
441
478
  description: Optional[pulumi.Input[builtins.str]] = None,
442
479
  display_name: Optional[pulumi.Input[builtins.str]] = None,
@@ -485,7 +522,13 @@ class Environment(pulumi.CustomResource):
485
522
  name="my-environment",
486
523
  description="Apigee Environment",
487
524
  display_name="environment-1",
488
- org_id=apigee_org.id)
525
+ org_id=apigee_org.id,
526
+ client_ip_resolution_config={
527
+ "header_index_algorithm": {
528
+ "ip_header_name": "X-Forwarded-For",
529
+ "ip_header_index": 1,
530
+ },
531
+ })
489
532
  ```
490
533
 
491
534
  ## Import
@@ -511,6 +554,8 @@ class Environment(pulumi.CustomResource):
511
554
  :param pulumi.Input[builtins.str] api_proxy_type: Optional. API Proxy type supported by the environment. The type can be set when creating
512
555
  the Environment and cannot be changed.
513
556
  Possible values are: `API_PROXY_TYPE_UNSPECIFIED`, `PROGRAMMABLE`, `CONFIGURABLE`.
557
+ :param pulumi.Input[Union['EnvironmentClientIpResolutionConfigArgs', 'EnvironmentClientIpResolutionConfigArgsDict']] client_ip_resolution_config: The algorithm to resolve IP. This will affect Analytics, API Security, and other features that use the client ip. To remove a client ip resolution config, update the field to an empty value. Example: '{ "clientIpResolutionConfig" = {} }' For more information, see: https://cloud.google.com/apigee/docs/api-platform/system-administration/client-ip-resolution
558
+ Structure is documented below.
514
559
  :param pulumi.Input[builtins.str] deployment_type: Optional. Deployment type supported by the environment. The deployment type can be
515
560
  set when creating the environment and cannot be changed. When you enable archive
516
561
  deployment, you will be prevented from performing a subset of actions within the
@@ -582,7 +627,13 @@ class Environment(pulumi.CustomResource):
582
627
  name="my-environment",
583
628
  description="Apigee Environment",
584
629
  display_name="environment-1",
585
- org_id=apigee_org.id)
630
+ org_id=apigee_org.id,
631
+ client_ip_resolution_config={
632
+ "header_index_algorithm": {
633
+ "ip_header_name": "X-Forwarded-For",
634
+ "ip_header_index": 1,
635
+ },
636
+ })
586
637
  ```
587
638
 
588
639
  ## Import
@@ -619,6 +670,7 @@ class Environment(pulumi.CustomResource):
619
670
  resource_name: str,
620
671
  opts: Optional[pulumi.ResourceOptions] = None,
621
672
  api_proxy_type: Optional[pulumi.Input[builtins.str]] = None,
673
+ client_ip_resolution_config: Optional[pulumi.Input[Union['EnvironmentClientIpResolutionConfigArgs', 'EnvironmentClientIpResolutionConfigArgsDict']]] = None,
622
674
  deployment_type: Optional[pulumi.Input[builtins.str]] = None,
623
675
  description: Optional[pulumi.Input[builtins.str]] = None,
624
676
  display_name: Optional[pulumi.Input[builtins.str]] = None,
@@ -638,6 +690,7 @@ class Environment(pulumi.CustomResource):
638
690
  __props__ = EnvironmentArgs.__new__(EnvironmentArgs)
639
691
 
640
692
  __props__.__dict__["api_proxy_type"] = api_proxy_type
693
+ __props__.__dict__["client_ip_resolution_config"] = client_ip_resolution_config
641
694
  __props__.__dict__["deployment_type"] = deployment_type
642
695
  __props__.__dict__["description"] = description
643
696
  __props__.__dict__["display_name"] = display_name
@@ -660,6 +713,7 @@ class Environment(pulumi.CustomResource):
660
713
  id: pulumi.Input[str],
661
714
  opts: Optional[pulumi.ResourceOptions] = None,
662
715
  api_proxy_type: Optional[pulumi.Input[builtins.str]] = None,
716
+ client_ip_resolution_config: Optional[pulumi.Input[Union['EnvironmentClientIpResolutionConfigArgs', 'EnvironmentClientIpResolutionConfigArgsDict']]] = None,
663
717
  deployment_type: Optional[pulumi.Input[builtins.str]] = None,
664
718
  description: Optional[pulumi.Input[builtins.str]] = None,
665
719
  display_name: Optional[pulumi.Input[builtins.str]] = None,
@@ -679,6 +733,8 @@ class Environment(pulumi.CustomResource):
679
733
  :param pulumi.Input[builtins.str] api_proxy_type: Optional. API Proxy type supported by the environment. The type can be set when creating
680
734
  the Environment and cannot be changed.
681
735
  Possible values are: `API_PROXY_TYPE_UNSPECIFIED`, `PROGRAMMABLE`, `CONFIGURABLE`.
736
+ :param pulumi.Input[Union['EnvironmentClientIpResolutionConfigArgs', 'EnvironmentClientIpResolutionConfigArgsDict']] client_ip_resolution_config: The algorithm to resolve IP. This will affect Analytics, API Security, and other features that use the client ip. To remove a client ip resolution config, update the field to an empty value. Example: '{ "clientIpResolutionConfig" = {} }' For more information, see: https://cloud.google.com/apigee/docs/api-platform/system-administration/client-ip-resolution
737
+ Structure is documented below.
682
738
  :param pulumi.Input[builtins.str] deployment_type: Optional. Deployment type supported by the environment. The deployment type can be
683
739
  set when creating the environment and cannot be changed. When you enable archive
684
740
  deployment, you will be prevented from performing a subset of actions within the
@@ -711,6 +767,7 @@ class Environment(pulumi.CustomResource):
711
767
  __props__ = _EnvironmentState.__new__(_EnvironmentState)
712
768
 
713
769
  __props__.__dict__["api_proxy_type"] = api_proxy_type
770
+ __props__.__dict__["client_ip_resolution_config"] = client_ip_resolution_config
714
771
  __props__.__dict__["deployment_type"] = deployment_type
715
772
  __props__.__dict__["description"] = description
716
773
  __props__.__dict__["display_name"] = display_name
@@ -732,6 +789,15 @@ class Environment(pulumi.CustomResource):
732
789
  """
733
790
  return pulumi.get(self, "api_proxy_type")
734
791
 
792
+ @property
793
+ @pulumi.getter(name="clientIpResolutionConfig")
794
+ def client_ip_resolution_config(self) -> pulumi.Output[Optional['outputs.EnvironmentClientIpResolutionConfig']]:
795
+ """
796
+ The algorithm to resolve IP. This will affect Analytics, API Security, and other features that use the client ip. To remove a client ip resolution config, update the field to an empty value. Example: '{ "clientIpResolutionConfig" = {} }' For more information, see: https://cloud.google.com/apigee/docs/api-platform/system-administration/client-ip-resolution
797
+ Structure is documented below.
798
+ """
799
+ return pulumi.get(self, "client_ip_resolution_config")
800
+
735
801
  @property
736
802
  @pulumi.getter(name="deploymentType")
737
803
  def deployment_type(self) -> pulumi.Output[builtins.str]:
@@ -27,6 +27,8 @@ __all__ = [
27
27
  'AppGroupAttribute',
28
28
  'DeveloperAttribute',
29
29
  'DnsZonePeeringConfig',
30
+ 'EnvironmentClientIpResolutionConfig',
31
+ 'EnvironmentClientIpResolutionConfigHeaderIndexAlgorithm',
30
32
  'EnvironmentIamBindingCondition',
31
33
  'EnvironmentIamMemberCondition',
32
34
  'EnvironmentNodeConfig',
@@ -486,6 +488,92 @@ class DnsZonePeeringConfig(dict):
486
488
  return pulumi.get(self, "target_project_id")
487
489
 
488
490
 
491
+ @pulumi.output_type
492
+ class EnvironmentClientIpResolutionConfig(dict):
493
+ @staticmethod
494
+ def __key_warning(key: str):
495
+ suggest = None
496
+ if key == "headerIndexAlgorithm":
497
+ suggest = "header_index_algorithm"
498
+
499
+ if suggest:
500
+ pulumi.log.warn(f"Key '{key}' not found in EnvironmentClientIpResolutionConfig. Access the value via the '{suggest}' property getter instead.")
501
+
502
+ def __getitem__(self, key: str) -> Any:
503
+ EnvironmentClientIpResolutionConfig.__key_warning(key)
504
+ return super().__getitem__(key)
505
+
506
+ def get(self, key: str, default = None) -> Any:
507
+ EnvironmentClientIpResolutionConfig.__key_warning(key)
508
+ return super().get(key, default)
509
+
510
+ def __init__(__self__, *,
511
+ header_index_algorithm: Optional['outputs.EnvironmentClientIpResolutionConfigHeaderIndexAlgorithm'] = None):
512
+ """
513
+ :param 'EnvironmentClientIpResolutionConfigHeaderIndexAlgorithmArgs' header_index_algorithm: Resolves the client ip based on a custom header.
514
+ Structure is documented below.
515
+ """
516
+ if header_index_algorithm is not None:
517
+ pulumi.set(__self__, "header_index_algorithm", header_index_algorithm)
518
+
519
+ @property
520
+ @pulumi.getter(name="headerIndexAlgorithm")
521
+ def header_index_algorithm(self) -> Optional['outputs.EnvironmentClientIpResolutionConfigHeaderIndexAlgorithm']:
522
+ """
523
+ Resolves the client ip based on a custom header.
524
+ Structure is documented below.
525
+ """
526
+ return pulumi.get(self, "header_index_algorithm")
527
+
528
+
529
+ @pulumi.output_type
530
+ class EnvironmentClientIpResolutionConfigHeaderIndexAlgorithm(dict):
531
+ @staticmethod
532
+ def __key_warning(key: str):
533
+ suggest = None
534
+ if key == "ipHeaderIndex":
535
+ suggest = "ip_header_index"
536
+ elif key == "ipHeaderName":
537
+ suggest = "ip_header_name"
538
+
539
+ if suggest:
540
+ pulumi.log.warn(f"Key '{key}' not found in EnvironmentClientIpResolutionConfigHeaderIndexAlgorithm. Access the value via the '{suggest}' property getter instead.")
541
+
542
+ def __getitem__(self, key: str) -> Any:
543
+ EnvironmentClientIpResolutionConfigHeaderIndexAlgorithm.__key_warning(key)
544
+ return super().__getitem__(key)
545
+
546
+ def get(self, key: str, default = None) -> Any:
547
+ EnvironmentClientIpResolutionConfigHeaderIndexAlgorithm.__key_warning(key)
548
+ return super().get(key, default)
549
+
550
+ def __init__(__self__, *,
551
+ ip_header_index: builtins.int,
552
+ ip_header_name: builtins.str):
553
+ """
554
+ :param builtins.int ip_header_index: The index of the ip in the header. Positive indices 0, 1, 2, 3 chooses indices from the left (first ips). Negative indices -1, -2, -3 chooses indices from the right (last ips).
555
+ :param builtins.str ip_header_name: The name of the header to extract the client ip from. We are currently only supporting the X-Forwarded-For header.
556
+ """
557
+ pulumi.set(__self__, "ip_header_index", ip_header_index)
558
+ pulumi.set(__self__, "ip_header_name", ip_header_name)
559
+
560
+ @property
561
+ @pulumi.getter(name="ipHeaderIndex")
562
+ def ip_header_index(self) -> builtins.int:
563
+ """
564
+ The index of the ip in the header. Positive indices 0, 1, 2, 3 chooses indices from the left (first ips). Negative indices -1, -2, -3 chooses indices from the right (last ips).
565
+ """
566
+ return pulumi.get(self, "ip_header_index")
567
+
568
+ @property
569
+ @pulumi.getter(name="ipHeaderName")
570
+ def ip_header_name(self) -> builtins.str:
571
+ """
572
+ The name of the header to extract the client ip from. We are currently only supporting the X-Forwarded-For header.
573
+ """
574
+ return pulumi.get(self, "ip_header_name")
575
+
576
+
489
577
  @pulumi.output_type
490
578
  class EnvironmentIamBindingCondition(dict):
491
579
  def __init__(__self__, *,
@@ -7,6 +7,7 @@ from .. import _utilities
7
7
  import typing
8
8
  # Export this package's modules as members:
9
9
  from .api_hub_instance import *
10
+ from .curation import *
10
11
  from .host_project_registration import *
11
12
  from ._inputs import *
12
13
  from . import outputs