pulumi-harness 0.8.0a1755712204__py3-none-any.whl → 0.9.0a1755842147__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.

Potentially problematic release.


This version of pulumi-harness might be problematic. Click here for more details.

Files changed (223) hide show
  1. pulumi_harness/__init__.py +67 -0
  2. pulumi_harness/add_user_to_group.py +4 -0
  3. pulumi_harness/application.py +4 -0
  4. pulumi_harness/application_git_sync.py +4 -0
  5. pulumi_harness/chaos/__init__.py +21 -0
  6. pulumi_harness/chaos/_inputs.py +2702 -0
  7. pulumi_harness/chaos/get_hub.py +324 -0
  8. pulumi_harness/chaos/get_image_registry.py +339 -0
  9. pulumi_harness/chaos/get_infrastructure_v2.py +684 -0
  10. pulumi_harness/chaos/get_security_governance_condition.py +261 -0
  11. pulumi_harness/chaos/get_security_governance_rule.py +261 -0
  12. pulumi_harness/chaos/hub.py +806 -0
  13. pulumi_harness/chaos/hub_sync.py +274 -0
  14. pulumi_harness/chaos/image_registry.py +730 -0
  15. pulumi_harness/chaos/infrastructure_v2.py +1670 -0
  16. pulumi_harness/chaos/outputs.py +2276 -0
  17. pulumi_harness/chaos/security_governance_condition.py +795 -0
  18. pulumi_harness/chaos/security_governance_rule.py +688 -0
  19. pulumi_harness/chaos_infrastructure.py +10 -4
  20. pulumi_harness/cloudprovider/aws.py +4 -0
  21. pulumi_harness/cloudprovider/azure.py +4 -0
  22. pulumi_harness/cloudprovider/datacenter.py +4 -0
  23. pulumi_harness/cloudprovider/kubernetes.py +4 -0
  24. pulumi_harness/cloudprovider/spot.py +4 -0
  25. pulumi_harness/cloudprovider/tanzu.py +4 -0
  26. pulumi_harness/cluster/_inputs.py +540 -0
  27. pulumi_harness/cluster/get_orchestrator_config.py +46 -6
  28. pulumi_harness/cluster/orchestrator.py +0 -16
  29. pulumi_harness/cluster/orchestrator_config.py +253 -5
  30. pulumi_harness/cluster/outputs.py +394 -0
  31. pulumi_harness/delegate_approval.py +4 -0
  32. pulumi_harness/encrypted_text.py +4 -0
  33. pulumi_harness/environment.py +4 -0
  34. pulumi_harness/get_current_account.py +3 -3
  35. pulumi_harness/git_connector.py +4 -0
  36. pulumi_harness/governance/rule.py +4 -0
  37. pulumi_harness/governance/rule_enforcement.py +4 -0
  38. pulumi_harness/infrastructure_definition.py +4 -0
  39. pulumi_harness/platform/_inputs.py +537 -469
  40. pulumi_harness/platform/app_dynamics_connector.py +4 -0
  41. pulumi_harness/platform/artifactory_connector.py +4 -0
  42. pulumi_harness/platform/aws_cc_connector.py +4 -0
  43. pulumi_harness/platform/aws_connector.py +11 -7
  44. pulumi_harness/platform/aws_kms_connector.py +70 -20
  45. pulumi_harness/platform/aws_secret_manager_connector.py +13 -9
  46. pulumi_harness/platform/azure_cloud_cost_connector.py +51 -0
  47. pulumi_harness/platform/azure_cloud_provider_connector.py +4 -0
  48. pulumi_harness/platform/azure_key_vault_connector.py +8 -0
  49. pulumi_harness/platform/bitbucket_connector.py +4 -0
  50. pulumi_harness/platform/connector_azure_artifacts.py +4 -2
  51. pulumi_harness/platform/connector_azure_repo.py +11 -16
  52. pulumi_harness/platform/connector_custom_secret_manager.py +51 -156
  53. pulumi_harness/platform/connector_customhealthsource.py +4 -0
  54. pulumi_harness/platform/connector_gcp_kms.py +4 -0
  55. pulumi_harness/platform/connector_jdbc.py +4 -0
  56. pulumi_harness/platform/connector_pdc.py +13 -13
  57. pulumi_harness/platform/connector_rancher.py +4 -0
  58. pulumi_harness/platform/dashboard_folders.py +2 -2
  59. pulumi_harness/platform/dashboards.py +10 -14
  60. pulumi_harness/platform/datadog_connector.py +4 -0
  61. pulumi_harness/platform/db_instance.py +4 -0
  62. pulumi_harness/platform/db_schema.py +25 -21
  63. pulumi_harness/platform/docker_connector.py +4 -4
  64. pulumi_harness/platform/dynatrace_connector.py +4 -0
  65. pulumi_harness/platform/elasticsearch_connector.py +19 -15
  66. pulumi_harness/platform/environment.py +25 -530
  67. pulumi_harness/platform/environment_clusters_mapping.py +8 -0
  68. pulumi_harness/platform/environment_group.py +13 -100
  69. pulumi_harness/platform/environment_service_overrides.py +20 -186
  70. pulumi_harness/platform/feature_flag_target_group.py +8 -8
  71. pulumi_harness/platform/file_store_file.py +11 -7
  72. pulumi_harness/platform/file_store_folder.py +11 -7
  73. pulumi_harness/platform/filters.py +8 -0
  74. pulumi_harness/platform/gcp_cloud_cost_connector.py +4 -0
  75. pulumi_harness/platform/gcp_connector.py +4 -0
  76. pulumi_harness/platform/gcp_secret_manager_connector.py +6 -92
  77. pulumi_harness/platform/get_api_key.py +8 -38
  78. pulumi_harness/platform/get_aws_kms_connector.py +16 -1
  79. pulumi_harness/platform/get_aws_secret_manager_connector.py +7 -3
  80. pulumi_harness/platform/get_azure_cloud_cost_connector.py +12 -1
  81. pulumi_harness/platform/get_connector_azure_repo.py +53 -2
  82. pulumi_harness/platform/get_connector_custom_secret_manager.py +28 -32
  83. pulumi_harness/platform/get_connector_pdc.py +3 -3
  84. pulumi_harness/platform/get_current_account.py +2 -20
  85. pulumi_harness/platform/get_dashboard_folders.py +16 -5
  86. pulumi_harness/platform/get_dashboards.py +15 -7
  87. pulumi_harness/platform/get_db_instance.py +5 -0
  88. pulumi_harness/platform/get_db_schema.py +12 -15
  89. pulumi_harness/platform/get_environment.py +5 -0
  90. pulumi_harness/platform/get_environment_list.py +12 -58
  91. pulumi_harness/platform/get_environment_service_overrides.py +6 -6
  92. pulumi_harness/platform/get_filters.py +4 -0
  93. pulumi_harness/platform/get_gcp_secret_manager_connector.py +4 -0
  94. pulumi_harness/platform/get_github_connector.py +3 -0
  95. pulumi_harness/platform/get_gitops_applications.py +8 -0
  96. pulumi_harness/platform/get_gitops_filters.py +25 -10
  97. pulumi_harness/platform/get_gitx_webhook.py +3 -3
  98. pulumi_harness/platform/get_har_registry.py +46 -10
  99. pulumi_harness/platform/get_iacm_default_pipeline.py +24 -0
  100. pulumi_harness/platform/get_infra_variable_set.py +34 -25
  101. pulumi_harness/platform/get_infrastructure.py +5 -0
  102. pulumi_harness/platform/get_manual_freeze.py +0 -24
  103. pulumi_harness/platform/get_monitored_service.py +22 -0
  104. pulumi_harness/platform/get_organization.py +4 -0
  105. pulumi_harness/platform/get_overrides.py +66 -2
  106. pulumi_harness/platform/get_pagerduty_connector.py +4 -0
  107. pulumi_harness/platform/get_pipeline_list.py +18 -63
  108. pulumi_harness/platform/get_project.py +4 -0
  109. pulumi_harness/platform/get_project_list.py +18 -63
  110. pulumi_harness/platform/get_provider.py +11 -2
  111. pulumi_harness/platform/get_resource_group.py +4 -0
  112. pulumi_harness/platform/get_role_assignments.py +6 -2
  113. pulumi_harness/platform/get_roles.py +4 -0
  114. pulumi_harness/platform/get_secret_file.py +4 -0
  115. pulumi_harness/platform/get_secret_sshkey.py +4 -0
  116. pulumi_harness/platform/get_service.py +5 -0
  117. pulumi_harness/platform/get_service_account.py +4 -0
  118. pulumi_harness/platform/get_service_list.py +22 -58
  119. pulumi_harness/platform/get_service_overrides_v2.py +42 -0
  120. pulumi_harness/platform/get_slo.py +22 -0
  121. pulumi_harness/platform/get_token.py +2 -0
  122. pulumi_harness/platform/get_user.py +4 -0
  123. pulumi_harness/platform/get_usergroup.py +4 -0
  124. pulumi_harness/platform/get_variables.py +4 -0
  125. pulumi_harness/platform/get_vault_connector.py +5 -1
  126. pulumi_harness/platform/get_workspace.py +8 -3
  127. pulumi_harness/platform/git_connector.py +4 -0
  128. pulumi_harness/platform/git_ops_agent.py +4 -0
  129. pulumi_harness/platform/git_ops_applications.py +4 -0
  130. pulumi_harness/platform/git_ops_cluster.py +51 -0
  131. pulumi_harness/platform/git_ops_gnupg.py +4 -0
  132. pulumi_harness/platform/git_ops_repo_cert.py +4 -0
  133. pulumi_harness/platform/git_ops_repo_cred.py +4 -0
  134. pulumi_harness/platform/git_ops_repository.py +4 -0
  135. pulumi_harness/platform/github_connector.py +11 -7
  136. pulumi_harness/platform/gitlab_connector.py +4 -0
  137. pulumi_harness/platform/gitops_app_project.py +4 -0
  138. pulumi_harness/platform/gitops_app_project_mapping.py +4 -0
  139. pulumi_harness/platform/gitops_applicationset.py +96 -0
  140. pulumi_harness/platform/gitops_filters.py +51 -179
  141. pulumi_harness/platform/gitx_webhook.py +4 -0
  142. pulumi_harness/platform/har_registry.py +42 -43
  143. pulumi_harness/platform/helm_connector.py +4 -0
  144. pulumi_harness/platform/iacm_default_pipeline.py +28 -0
  145. pulumi_harness/platform/infra_module.py +6 -2
  146. pulumi_harness/platform/infra_variable_set.py +38 -22
  147. pulumi_harness/platform/infrastructure.py +18 -240
  148. pulumi_harness/platform/input_set.py +4 -0
  149. pulumi_harness/platform/jenkins_connector.py +8 -0
  150. pulumi_harness/platform/jira_connector.py +4 -2
  151. pulumi_harness/platform/kubernetes_cloud_cost_connector.py +35 -11
  152. pulumi_harness/platform/kubernetes_connector.py +4 -0
  153. pulumi_harness/platform/manual_freeze.py +6 -154
  154. pulumi_harness/platform/monitored_service.py +16 -12
  155. pulumi_harness/platform/newrelic_connector.py +4 -0
  156. pulumi_harness/platform/nexus_connector.py +4 -4
  157. pulumi_harness/platform/notification_rule.py +4 -0
  158. pulumi_harness/platform/oci_helm_connector.py +4 -0
  159. pulumi_harness/platform/organization.py +8 -0
  160. pulumi_harness/platform/outputs.py +481 -219
  161. pulumi_harness/platform/overrides.py +48 -2
  162. pulumi_harness/platform/pagerduty_connector.py +8 -0
  163. pulumi_harness/platform/pipeline.py +18 -2
  164. pulumi_harness/platform/pipeline_filters.py +4 -0
  165. pulumi_harness/platform/policy.py +6 -26
  166. pulumi_harness/platform/policy_set.py +4 -0
  167. pulumi_harness/platform/project.py +8 -0
  168. pulumi_harness/platform/prometheus_connector.py +4 -0
  169. pulumi_harness/platform/provider.py +4 -2
  170. pulumi_harness/platform/repo.py +40 -0
  171. pulumi_harness/platform/resource_group.py +15 -7
  172. pulumi_harness/platform/role_assignments.py +20 -16
  173. pulumi_harness/platform/roles.py +8 -0
  174. pulumi_harness/platform/secret_file.py +8 -0
  175. pulumi_harness/platform/secret_sshkey.py +6 -2
  176. pulumi_harness/platform/secret_text.py +78 -0
  177. pulumi_harness/platform/service.py +13 -494
  178. pulumi_harness/platform/service_account.py +8 -0
  179. pulumi_harness/platform/service_now_connector.py +4 -2
  180. pulumi_harness/platform/service_overrides_v2.py +4 -204
  181. pulumi_harness/platform/slo.py +12 -18
  182. pulumi_harness/platform/splunk_connector.py +4 -0
  183. pulumi_harness/platform/spot_connector.py +4 -0
  184. pulumi_harness/platform/sumologic_connector.py +4 -0
  185. pulumi_harness/platform/tas_connector.py +4 -0
  186. pulumi_harness/platform/template.py +25 -21
  187. pulumi_harness/platform/template_filters.py +4 -0
  188. pulumi_harness/platform/terraform_cloud_connector.py +4 -0
  189. pulumi_harness/platform/token.py +6 -2
  190. pulumi_harness/platform/triggers.py +8 -0
  191. pulumi_harness/platform/user.py +13 -9
  192. pulumi_harness/platform/usergroup.py +71 -7
  193. pulumi_harness/platform/variables.py +8 -0
  194. pulumi_harness/platform/vault_connector.py +15 -7
  195. pulumi_harness/platform/workspace.py +19 -7
  196. pulumi_harness/platform_api_key.py +6 -66
  197. pulumi_harness/platform_ccm_filters.py +11 -7
  198. pulumi_harness/pulumi-plugin.json +1 -1
  199. pulumi_harness/service/__init__.py +4 -0
  200. pulumi_harness/service/_inputs.py +1729 -0
  201. pulumi_harness/service/ami.py +4 -0
  202. pulumi_harness/service/codedeploy.py +4 -0
  203. pulumi_harness/service/discovery_agent.py +1211 -0
  204. pulumi_harness/service/discovery_setting.py +384 -0
  205. pulumi_harness/service/ecs.py +4 -0
  206. pulumi_harness/service/get_discovery_agent.py +443 -0
  207. pulumi_harness/service/get_discovery_setting.py +199 -0
  208. pulumi_harness/service/helm.py +4 -0
  209. pulumi_harness/service/kubernetes.py +4 -0
  210. pulumi_harness/service/lambda_.py +4 -0
  211. pulumi_harness/service/outputs.py +2367 -117
  212. pulumi_harness/service/ssh.py +4 -0
  213. pulumi_harness/service/tanzu.py +4 -0
  214. pulumi_harness/service/winrm.py +4 -0
  215. pulumi_harness/ssh_credential.py +4 -0
  216. pulumi_harness/user.py +4 -0
  217. pulumi_harness/user_group.py +4 -0
  218. pulumi_harness/yaml_config.py +4 -0
  219. {pulumi_harness-0.8.0a1755712204.dist-info → pulumi_harness-0.9.0a1755842147.dist-info}/METADATA +1 -1
  220. pulumi_harness-0.9.0a1755842147.dist-info/RECORD +355 -0
  221. pulumi_harness-0.8.0a1755712204.dist-info/RECORD +0 -337
  222. {pulumi_harness-0.8.0a1755712204.dist-info → pulumi_harness-0.9.0a1755842147.dist-info}/WHEEL +0 -0
  223. {pulumi_harness-0.8.0a1755712204.dist-info → pulumi_harness-0.9.0a1755842147.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,1211 @@
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
+ from . import outputs
17
+ from ._inputs import *
18
+
19
+ __all__ = ['DiscoveryAgentArgs', 'DiscoveryAgent']
20
+
21
+ @pulumi.input_type
22
+ class DiscoveryAgentArgs:
23
+ def __init__(__self__, *,
24
+ configs: pulumi.Input[Sequence[pulumi.Input['DiscoveryAgentConfigArgs']]],
25
+ environment_identifier: pulumi.Input[_builtins.str],
26
+ infra_identifier: pulumi.Input[_builtins.str],
27
+ correlation_id: Optional[pulumi.Input[_builtins.str]] = None,
28
+ installation_type: Optional[pulumi.Input[_builtins.str]] = None,
29
+ name: Optional[pulumi.Input[_builtins.str]] = None,
30
+ org_identifier: Optional[pulumi.Input[_builtins.str]] = None,
31
+ permanent_installation: Optional[pulumi.Input[_builtins.bool]] = None,
32
+ project_identifier: Optional[pulumi.Input[_builtins.str]] = None,
33
+ webhook_url: Optional[pulumi.Input[_builtins.str]] = None):
34
+ """
35
+ The set of arguments for constructing a DiscoveryAgent resource.
36
+ :param pulumi.Input[Sequence[pulumi.Input['DiscoveryAgentConfigArgs']]] configs: Configuration for the agent. This is a required field.
37
+ :param pulumi.Input[_builtins.str] environment_identifier: The environment identifier of the agent. This is a required field.
38
+ :param pulumi.Input[_builtins.str] infra_identifier: The infrastructure identifier of the agent. This is a required field.
39
+ :param pulumi.Input[_builtins.str] correlation_id: Correlation ID for the agent.
40
+ :param pulumi.Input[_builtins.str] installation_type: Type of installation for the agent.
41
+ :param pulumi.Input[_builtins.str] name: The name of the agent. This is a required field.
42
+ :param pulumi.Input[_builtins.str] org_identifier: The organization identifier of the agent. Must be 1-64 characters and contain only alphanumeric characters, hyphens, or underscores.
43
+ :param pulumi.Input[_builtins.bool] permanent_installation: Whether this is a permanent installation.
44
+ :param pulumi.Input[_builtins.str] project_identifier: The project identifier of the agent. Must be 1-64 characters and contain only alphanumeric characters, hyphens, or underscores.
45
+ :param pulumi.Input[_builtins.str] webhook_url: Webhook URL for the agent.
46
+ """
47
+ pulumi.set(__self__, "configs", configs)
48
+ pulumi.set(__self__, "environment_identifier", environment_identifier)
49
+ pulumi.set(__self__, "infra_identifier", infra_identifier)
50
+ if correlation_id is not None:
51
+ pulumi.set(__self__, "correlation_id", correlation_id)
52
+ if installation_type is not None:
53
+ pulumi.set(__self__, "installation_type", installation_type)
54
+ if name is not None:
55
+ pulumi.set(__self__, "name", name)
56
+ if org_identifier is not None:
57
+ pulumi.set(__self__, "org_identifier", org_identifier)
58
+ if permanent_installation is not None:
59
+ pulumi.set(__self__, "permanent_installation", permanent_installation)
60
+ if project_identifier is not None:
61
+ pulumi.set(__self__, "project_identifier", project_identifier)
62
+ if webhook_url is not None:
63
+ pulumi.set(__self__, "webhook_url", webhook_url)
64
+
65
+ @_builtins.property
66
+ @pulumi.getter
67
+ def configs(self) -> pulumi.Input[Sequence[pulumi.Input['DiscoveryAgentConfigArgs']]]:
68
+ """
69
+ Configuration for the agent. This is a required field.
70
+ """
71
+ return pulumi.get(self, "configs")
72
+
73
+ @configs.setter
74
+ def configs(self, value: pulumi.Input[Sequence[pulumi.Input['DiscoveryAgentConfigArgs']]]):
75
+ pulumi.set(self, "configs", value)
76
+
77
+ @_builtins.property
78
+ @pulumi.getter(name="environmentIdentifier")
79
+ def environment_identifier(self) -> pulumi.Input[_builtins.str]:
80
+ """
81
+ The environment identifier of the agent. This is a required field.
82
+ """
83
+ return pulumi.get(self, "environment_identifier")
84
+
85
+ @environment_identifier.setter
86
+ def environment_identifier(self, value: pulumi.Input[_builtins.str]):
87
+ pulumi.set(self, "environment_identifier", value)
88
+
89
+ @_builtins.property
90
+ @pulumi.getter(name="infraIdentifier")
91
+ def infra_identifier(self) -> pulumi.Input[_builtins.str]:
92
+ """
93
+ The infrastructure identifier of the agent. This is a required field.
94
+ """
95
+ return pulumi.get(self, "infra_identifier")
96
+
97
+ @infra_identifier.setter
98
+ def infra_identifier(self, value: pulumi.Input[_builtins.str]):
99
+ pulumi.set(self, "infra_identifier", value)
100
+
101
+ @_builtins.property
102
+ @pulumi.getter(name="correlationId")
103
+ def correlation_id(self) -> Optional[pulumi.Input[_builtins.str]]:
104
+ """
105
+ Correlation ID for the agent.
106
+ """
107
+ return pulumi.get(self, "correlation_id")
108
+
109
+ @correlation_id.setter
110
+ def correlation_id(self, value: Optional[pulumi.Input[_builtins.str]]):
111
+ pulumi.set(self, "correlation_id", value)
112
+
113
+ @_builtins.property
114
+ @pulumi.getter(name="installationType")
115
+ def installation_type(self) -> Optional[pulumi.Input[_builtins.str]]:
116
+ """
117
+ Type of installation for the agent.
118
+ """
119
+ return pulumi.get(self, "installation_type")
120
+
121
+ @installation_type.setter
122
+ def installation_type(self, value: Optional[pulumi.Input[_builtins.str]]):
123
+ pulumi.set(self, "installation_type", value)
124
+
125
+ @_builtins.property
126
+ @pulumi.getter
127
+ def name(self) -> Optional[pulumi.Input[_builtins.str]]:
128
+ """
129
+ The name of the agent. This is a required field.
130
+ """
131
+ return pulumi.get(self, "name")
132
+
133
+ @name.setter
134
+ def name(self, value: Optional[pulumi.Input[_builtins.str]]):
135
+ pulumi.set(self, "name", value)
136
+
137
+ @_builtins.property
138
+ @pulumi.getter(name="orgIdentifier")
139
+ def org_identifier(self) -> Optional[pulumi.Input[_builtins.str]]:
140
+ """
141
+ The organization identifier of the agent. Must be 1-64 characters and contain only alphanumeric characters, hyphens, or underscores.
142
+ """
143
+ return pulumi.get(self, "org_identifier")
144
+
145
+ @org_identifier.setter
146
+ def org_identifier(self, value: Optional[pulumi.Input[_builtins.str]]):
147
+ pulumi.set(self, "org_identifier", value)
148
+
149
+ @_builtins.property
150
+ @pulumi.getter(name="permanentInstallation")
151
+ def permanent_installation(self) -> Optional[pulumi.Input[_builtins.bool]]:
152
+ """
153
+ Whether this is a permanent installation.
154
+ """
155
+ return pulumi.get(self, "permanent_installation")
156
+
157
+ @permanent_installation.setter
158
+ def permanent_installation(self, value: Optional[pulumi.Input[_builtins.bool]]):
159
+ pulumi.set(self, "permanent_installation", value)
160
+
161
+ @_builtins.property
162
+ @pulumi.getter(name="projectIdentifier")
163
+ def project_identifier(self) -> Optional[pulumi.Input[_builtins.str]]:
164
+ """
165
+ The project identifier of the agent. Must be 1-64 characters and contain only alphanumeric characters, hyphens, or underscores.
166
+ """
167
+ return pulumi.get(self, "project_identifier")
168
+
169
+ @project_identifier.setter
170
+ def project_identifier(self, value: Optional[pulumi.Input[_builtins.str]]):
171
+ pulumi.set(self, "project_identifier", value)
172
+
173
+ @_builtins.property
174
+ @pulumi.getter(name="webhookUrl")
175
+ def webhook_url(self) -> Optional[pulumi.Input[_builtins.str]]:
176
+ """
177
+ Webhook URL for the agent.
178
+ """
179
+ return pulumi.get(self, "webhook_url")
180
+
181
+ @webhook_url.setter
182
+ def webhook_url(self, value: Optional[pulumi.Input[_builtins.str]]):
183
+ pulumi.set(self, "webhook_url", value)
184
+
185
+
186
+ @pulumi.input_type
187
+ class _DiscoveryAgentState:
188
+ def __init__(__self__, *,
189
+ configs: Optional[pulumi.Input[Sequence[pulumi.Input['DiscoveryAgentConfigArgs']]]] = None,
190
+ correlation_id: Optional[pulumi.Input[_builtins.str]] = None,
191
+ created_at: Optional[pulumi.Input[_builtins.str]] = None,
192
+ created_by: Optional[pulumi.Input[_builtins.str]] = None,
193
+ description: Optional[pulumi.Input[_builtins.str]] = None,
194
+ environment_identifier: Optional[pulumi.Input[_builtins.str]] = None,
195
+ identity: Optional[pulumi.Input[_builtins.str]] = None,
196
+ infra_identifier: Optional[pulumi.Input[_builtins.str]] = None,
197
+ installation_details: Optional[pulumi.Input[Sequence[pulumi.Input['DiscoveryAgentInstallationDetailArgs']]]] = None,
198
+ installation_type: Optional[pulumi.Input[_builtins.str]] = None,
199
+ name: Optional[pulumi.Input[_builtins.str]] = None,
200
+ network_map_count: Optional[pulumi.Input[_builtins.int]] = None,
201
+ org_identifier: Optional[pulumi.Input[_builtins.str]] = None,
202
+ permanent_installation: Optional[pulumi.Input[_builtins.bool]] = None,
203
+ project_identifier: Optional[pulumi.Input[_builtins.str]] = None,
204
+ removed: Optional[pulumi.Input[_builtins.bool]] = None,
205
+ removed_at: Optional[pulumi.Input[_builtins.str]] = None,
206
+ service_count: Optional[pulumi.Input[_builtins.int]] = None,
207
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
208
+ updated_at: Optional[pulumi.Input[_builtins.str]] = None,
209
+ updated_by: Optional[pulumi.Input[_builtins.str]] = None,
210
+ webhook_url: Optional[pulumi.Input[_builtins.str]] = None):
211
+ """
212
+ Input properties used for looking up and filtering DiscoveryAgent resources.
213
+ :param pulumi.Input[Sequence[pulumi.Input['DiscoveryAgentConfigArgs']]] configs: Configuration for the agent. This is a required field.
214
+ :param pulumi.Input[_builtins.str] correlation_id: Correlation ID for the agent.
215
+ :param pulumi.Input[_builtins.str] created_at: Timestamp when the agent was created.
216
+ :param pulumi.Input[_builtins.str] created_by: User who created the agent.
217
+ :param pulumi.Input[_builtins.str] description: Description of the agent.
218
+ :param pulumi.Input[_builtins.str] environment_identifier: The environment identifier of the agent. This is a required field.
219
+ :param pulumi.Input[_builtins.str] identity: The unique identity of the agent.
220
+ :param pulumi.Input[_builtins.str] infra_identifier: The infrastructure identifier of the agent. This is a required field.
221
+ :param pulumi.Input[Sequence[pulumi.Input['DiscoveryAgentInstallationDetailArgs']]] installation_details: Installation details of the agent.
222
+ :param pulumi.Input[_builtins.str] installation_type: Type of installation for the agent.
223
+ :param pulumi.Input[_builtins.str] name: The name of the agent. This is a required field.
224
+ :param pulumi.Input[_builtins.int] network_map_count: Number of network maps associated with this agent.
225
+ :param pulumi.Input[_builtins.str] org_identifier: The organization identifier of the agent. Must be 1-64 characters and contain only alphanumeric characters, hyphens, or underscores.
226
+ :param pulumi.Input[_builtins.bool] permanent_installation: Whether this is a permanent installation.
227
+ :param pulumi.Input[_builtins.str] project_identifier: The project identifier of the agent. Must be 1-64 characters and contain only alphanumeric characters, hyphens, or underscores.
228
+ :param pulumi.Input[_builtins.bool] removed: Whether the agent has been removed.
229
+ :param pulumi.Input[_builtins.str] removed_at: Timestamp when the agent was removed.
230
+ :param pulumi.Input[_builtins.int] service_count: Number of services managed by this agent.
231
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: List of resource tags for the agent.
232
+ :param pulumi.Input[_builtins.str] updated_at: Timestamp when the agent was last updated.
233
+ :param pulumi.Input[_builtins.str] updated_by: User who last updated the agent.
234
+ :param pulumi.Input[_builtins.str] webhook_url: Webhook URL for the agent.
235
+ """
236
+ if configs is not None:
237
+ pulumi.set(__self__, "configs", configs)
238
+ if correlation_id is not None:
239
+ pulumi.set(__self__, "correlation_id", correlation_id)
240
+ if created_at is not None:
241
+ pulumi.set(__self__, "created_at", created_at)
242
+ if created_by is not None:
243
+ pulumi.set(__self__, "created_by", created_by)
244
+ if description is not None:
245
+ pulumi.set(__self__, "description", description)
246
+ if environment_identifier is not None:
247
+ pulumi.set(__self__, "environment_identifier", environment_identifier)
248
+ if identity is not None:
249
+ pulumi.set(__self__, "identity", identity)
250
+ if infra_identifier is not None:
251
+ pulumi.set(__self__, "infra_identifier", infra_identifier)
252
+ if installation_details is not None:
253
+ pulumi.set(__self__, "installation_details", installation_details)
254
+ if installation_type is not None:
255
+ pulumi.set(__self__, "installation_type", installation_type)
256
+ if name is not None:
257
+ pulumi.set(__self__, "name", name)
258
+ if network_map_count is not None:
259
+ pulumi.set(__self__, "network_map_count", network_map_count)
260
+ if org_identifier is not None:
261
+ pulumi.set(__self__, "org_identifier", org_identifier)
262
+ if permanent_installation is not None:
263
+ pulumi.set(__self__, "permanent_installation", permanent_installation)
264
+ if project_identifier is not None:
265
+ pulumi.set(__self__, "project_identifier", project_identifier)
266
+ if removed is not None:
267
+ pulumi.set(__self__, "removed", removed)
268
+ if removed_at is not None:
269
+ pulumi.set(__self__, "removed_at", removed_at)
270
+ if service_count is not None:
271
+ pulumi.set(__self__, "service_count", service_count)
272
+ if tags is not None:
273
+ pulumi.set(__self__, "tags", tags)
274
+ if updated_at is not None:
275
+ pulumi.set(__self__, "updated_at", updated_at)
276
+ if updated_by is not None:
277
+ pulumi.set(__self__, "updated_by", updated_by)
278
+ if webhook_url is not None:
279
+ pulumi.set(__self__, "webhook_url", webhook_url)
280
+
281
+ @_builtins.property
282
+ @pulumi.getter
283
+ def configs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DiscoveryAgentConfigArgs']]]]:
284
+ """
285
+ Configuration for the agent. This is a required field.
286
+ """
287
+ return pulumi.get(self, "configs")
288
+
289
+ @configs.setter
290
+ def configs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['DiscoveryAgentConfigArgs']]]]):
291
+ pulumi.set(self, "configs", value)
292
+
293
+ @_builtins.property
294
+ @pulumi.getter(name="correlationId")
295
+ def correlation_id(self) -> Optional[pulumi.Input[_builtins.str]]:
296
+ """
297
+ Correlation ID for the agent.
298
+ """
299
+ return pulumi.get(self, "correlation_id")
300
+
301
+ @correlation_id.setter
302
+ def correlation_id(self, value: Optional[pulumi.Input[_builtins.str]]):
303
+ pulumi.set(self, "correlation_id", value)
304
+
305
+ @_builtins.property
306
+ @pulumi.getter(name="createdAt")
307
+ def created_at(self) -> Optional[pulumi.Input[_builtins.str]]:
308
+ """
309
+ Timestamp when the agent was created.
310
+ """
311
+ return pulumi.get(self, "created_at")
312
+
313
+ @created_at.setter
314
+ def created_at(self, value: Optional[pulumi.Input[_builtins.str]]):
315
+ pulumi.set(self, "created_at", value)
316
+
317
+ @_builtins.property
318
+ @pulumi.getter(name="createdBy")
319
+ def created_by(self) -> Optional[pulumi.Input[_builtins.str]]:
320
+ """
321
+ User who created the agent.
322
+ """
323
+ return pulumi.get(self, "created_by")
324
+
325
+ @created_by.setter
326
+ def created_by(self, value: Optional[pulumi.Input[_builtins.str]]):
327
+ pulumi.set(self, "created_by", value)
328
+
329
+ @_builtins.property
330
+ @pulumi.getter
331
+ def description(self) -> Optional[pulumi.Input[_builtins.str]]:
332
+ """
333
+ Description of the agent.
334
+ """
335
+ return pulumi.get(self, "description")
336
+
337
+ @description.setter
338
+ def description(self, value: Optional[pulumi.Input[_builtins.str]]):
339
+ pulumi.set(self, "description", value)
340
+
341
+ @_builtins.property
342
+ @pulumi.getter(name="environmentIdentifier")
343
+ def environment_identifier(self) -> Optional[pulumi.Input[_builtins.str]]:
344
+ """
345
+ The environment identifier of the agent. This is a required field.
346
+ """
347
+ return pulumi.get(self, "environment_identifier")
348
+
349
+ @environment_identifier.setter
350
+ def environment_identifier(self, value: Optional[pulumi.Input[_builtins.str]]):
351
+ pulumi.set(self, "environment_identifier", value)
352
+
353
+ @_builtins.property
354
+ @pulumi.getter
355
+ def identity(self) -> Optional[pulumi.Input[_builtins.str]]:
356
+ """
357
+ The unique identity of the agent.
358
+ """
359
+ return pulumi.get(self, "identity")
360
+
361
+ @identity.setter
362
+ def identity(self, value: Optional[pulumi.Input[_builtins.str]]):
363
+ pulumi.set(self, "identity", value)
364
+
365
+ @_builtins.property
366
+ @pulumi.getter(name="infraIdentifier")
367
+ def infra_identifier(self) -> Optional[pulumi.Input[_builtins.str]]:
368
+ """
369
+ The infrastructure identifier of the agent. This is a required field.
370
+ """
371
+ return pulumi.get(self, "infra_identifier")
372
+
373
+ @infra_identifier.setter
374
+ def infra_identifier(self, value: Optional[pulumi.Input[_builtins.str]]):
375
+ pulumi.set(self, "infra_identifier", value)
376
+
377
+ @_builtins.property
378
+ @pulumi.getter(name="installationDetails")
379
+ def installation_details(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DiscoveryAgentInstallationDetailArgs']]]]:
380
+ """
381
+ Installation details of the agent.
382
+ """
383
+ return pulumi.get(self, "installation_details")
384
+
385
+ @installation_details.setter
386
+ def installation_details(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['DiscoveryAgentInstallationDetailArgs']]]]):
387
+ pulumi.set(self, "installation_details", value)
388
+
389
+ @_builtins.property
390
+ @pulumi.getter(name="installationType")
391
+ def installation_type(self) -> Optional[pulumi.Input[_builtins.str]]:
392
+ """
393
+ Type of installation for the agent.
394
+ """
395
+ return pulumi.get(self, "installation_type")
396
+
397
+ @installation_type.setter
398
+ def installation_type(self, value: Optional[pulumi.Input[_builtins.str]]):
399
+ pulumi.set(self, "installation_type", value)
400
+
401
+ @_builtins.property
402
+ @pulumi.getter
403
+ def name(self) -> Optional[pulumi.Input[_builtins.str]]:
404
+ """
405
+ The name of the agent. This is a required field.
406
+ """
407
+ return pulumi.get(self, "name")
408
+
409
+ @name.setter
410
+ def name(self, value: Optional[pulumi.Input[_builtins.str]]):
411
+ pulumi.set(self, "name", value)
412
+
413
+ @_builtins.property
414
+ @pulumi.getter(name="networkMapCount")
415
+ def network_map_count(self) -> Optional[pulumi.Input[_builtins.int]]:
416
+ """
417
+ Number of network maps associated with this agent.
418
+ """
419
+ return pulumi.get(self, "network_map_count")
420
+
421
+ @network_map_count.setter
422
+ def network_map_count(self, value: Optional[pulumi.Input[_builtins.int]]):
423
+ pulumi.set(self, "network_map_count", value)
424
+
425
+ @_builtins.property
426
+ @pulumi.getter(name="orgIdentifier")
427
+ def org_identifier(self) -> Optional[pulumi.Input[_builtins.str]]:
428
+ """
429
+ The organization identifier of the agent. Must be 1-64 characters and contain only alphanumeric characters, hyphens, or underscores.
430
+ """
431
+ return pulumi.get(self, "org_identifier")
432
+
433
+ @org_identifier.setter
434
+ def org_identifier(self, value: Optional[pulumi.Input[_builtins.str]]):
435
+ pulumi.set(self, "org_identifier", value)
436
+
437
+ @_builtins.property
438
+ @pulumi.getter(name="permanentInstallation")
439
+ def permanent_installation(self) -> Optional[pulumi.Input[_builtins.bool]]:
440
+ """
441
+ Whether this is a permanent installation.
442
+ """
443
+ return pulumi.get(self, "permanent_installation")
444
+
445
+ @permanent_installation.setter
446
+ def permanent_installation(self, value: Optional[pulumi.Input[_builtins.bool]]):
447
+ pulumi.set(self, "permanent_installation", value)
448
+
449
+ @_builtins.property
450
+ @pulumi.getter(name="projectIdentifier")
451
+ def project_identifier(self) -> Optional[pulumi.Input[_builtins.str]]:
452
+ """
453
+ The project identifier of the agent. Must be 1-64 characters and contain only alphanumeric characters, hyphens, or underscores.
454
+ """
455
+ return pulumi.get(self, "project_identifier")
456
+
457
+ @project_identifier.setter
458
+ def project_identifier(self, value: Optional[pulumi.Input[_builtins.str]]):
459
+ pulumi.set(self, "project_identifier", value)
460
+
461
+ @_builtins.property
462
+ @pulumi.getter
463
+ def removed(self) -> Optional[pulumi.Input[_builtins.bool]]:
464
+ """
465
+ Whether the agent has been removed.
466
+ """
467
+ return pulumi.get(self, "removed")
468
+
469
+ @removed.setter
470
+ def removed(self, value: Optional[pulumi.Input[_builtins.bool]]):
471
+ pulumi.set(self, "removed", value)
472
+
473
+ @_builtins.property
474
+ @pulumi.getter(name="removedAt")
475
+ def removed_at(self) -> Optional[pulumi.Input[_builtins.str]]:
476
+ """
477
+ Timestamp when the agent was removed.
478
+ """
479
+ return pulumi.get(self, "removed_at")
480
+
481
+ @removed_at.setter
482
+ def removed_at(self, value: Optional[pulumi.Input[_builtins.str]]):
483
+ pulumi.set(self, "removed_at", value)
484
+
485
+ @_builtins.property
486
+ @pulumi.getter(name="serviceCount")
487
+ def service_count(self) -> Optional[pulumi.Input[_builtins.int]]:
488
+ """
489
+ Number of services managed by this agent.
490
+ """
491
+ return pulumi.get(self, "service_count")
492
+
493
+ @service_count.setter
494
+ def service_count(self, value: Optional[pulumi.Input[_builtins.int]]):
495
+ pulumi.set(self, "service_count", value)
496
+
497
+ @_builtins.property
498
+ @pulumi.getter
499
+ def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
500
+ """
501
+ List of resource tags for the agent.
502
+ """
503
+ return pulumi.get(self, "tags")
504
+
505
+ @tags.setter
506
+ def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
507
+ pulumi.set(self, "tags", value)
508
+
509
+ @_builtins.property
510
+ @pulumi.getter(name="updatedAt")
511
+ def updated_at(self) -> Optional[pulumi.Input[_builtins.str]]:
512
+ """
513
+ Timestamp when the agent was last updated.
514
+ """
515
+ return pulumi.get(self, "updated_at")
516
+
517
+ @updated_at.setter
518
+ def updated_at(self, value: Optional[pulumi.Input[_builtins.str]]):
519
+ pulumi.set(self, "updated_at", value)
520
+
521
+ @_builtins.property
522
+ @pulumi.getter(name="updatedBy")
523
+ def updated_by(self) -> Optional[pulumi.Input[_builtins.str]]:
524
+ """
525
+ User who last updated the agent.
526
+ """
527
+ return pulumi.get(self, "updated_by")
528
+
529
+ @updated_by.setter
530
+ def updated_by(self, value: Optional[pulumi.Input[_builtins.str]]):
531
+ pulumi.set(self, "updated_by", value)
532
+
533
+ @_builtins.property
534
+ @pulumi.getter(name="webhookUrl")
535
+ def webhook_url(self) -> Optional[pulumi.Input[_builtins.str]]:
536
+ """
537
+ Webhook URL for the agent.
538
+ """
539
+ return pulumi.get(self, "webhook_url")
540
+
541
+ @webhook_url.setter
542
+ def webhook_url(self, value: Optional[pulumi.Input[_builtins.str]]):
543
+ pulumi.set(self, "webhook_url", value)
544
+
545
+
546
+ @pulumi.type_token("harness:service/discoveryAgent:DiscoveryAgent")
547
+ class DiscoveryAgent(pulumi.CustomResource):
548
+ @overload
549
+ def __init__(__self__,
550
+ resource_name: str,
551
+ opts: Optional[pulumi.ResourceOptions] = None,
552
+ configs: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DiscoveryAgentConfigArgs', 'DiscoveryAgentConfigArgsDict']]]]] = None,
553
+ correlation_id: Optional[pulumi.Input[_builtins.str]] = None,
554
+ environment_identifier: Optional[pulumi.Input[_builtins.str]] = None,
555
+ infra_identifier: Optional[pulumi.Input[_builtins.str]] = None,
556
+ installation_type: Optional[pulumi.Input[_builtins.str]] = None,
557
+ name: Optional[pulumi.Input[_builtins.str]] = None,
558
+ org_identifier: Optional[pulumi.Input[_builtins.str]] = None,
559
+ permanent_installation: Optional[pulumi.Input[_builtins.bool]] = None,
560
+ project_identifier: Optional[pulumi.Input[_builtins.str]] = None,
561
+ webhook_url: Optional[pulumi.Input[_builtins.str]] = None,
562
+ __props__=None):
563
+ """
564
+ Resource for managing a Harness Service Discovery Agent.
565
+
566
+ This resource allows you to create, read, update, and delete a Service Discovery Agent in Harness.
567
+
568
+ ## Example Usage
569
+
570
+ ```python
571
+ import pulumi
572
+ import pulumi_harness as harness
573
+
574
+ example = harness.service.DiscoveryAgent("example",
575
+ name="ExampleAgent",
576
+ org_identifier="your_org_id",
577
+ project_identifier="your_project_id",
578
+ environment_identifier="your_environment_id",
579
+ infra_identifier="your_infra_id",
580
+ configs=[{
581
+ "collector_image": "harness/service-discovery-collector:main-latest",
582
+ "log_watcher_image": "harness/chaos-log-watcher:main-latest",
583
+ "kubernetes": [{
584
+ "namespace": "harness-sd",
585
+ }],
586
+ }])
587
+ ```
588
+
589
+ ### Additional Examples
590
+
591
+ ```python
592
+ import pulumi
593
+ import pulumi_harness as harness
594
+
595
+ # Create a new service discovery agent with minimal configuration
596
+ example = harness.service.DiscoveryAgent("example",
597
+ name="example-agent",
598
+ org_identifier=org_identifier,
599
+ project_identifier=project_identifier,
600
+ environment_identifier=environment_identifier,
601
+ infra_identifier="example-infra",
602
+ configs=[{
603
+ "kubernetes": [{
604
+ "namespace": "harness-sd",
605
+ }],
606
+ }])
607
+ # Create a new service discovery agent with node agent enabled
608
+ node_agent = harness.service.DiscoveryAgent("node_agent",
609
+ name="node-agent-example",
610
+ org_identifier=org_identifier,
611
+ project_identifier=project_identifier,
612
+ environment_identifier=environment_identifier,
613
+ infra_identifier="node-agent-example",
614
+ configs=[{
615
+ "kubernetes": [{
616
+ "namespace": "harness-sd",
617
+ }],
618
+ "datas": [{
619
+ "enable_node_agent": True,
620
+ }],
621
+ }])
622
+ # Create a new service discovery agent with full configuration
623
+ full_config = harness.service.DiscoveryAgent("full_config",
624
+ name="full-config-example",
625
+ org_identifier=org_identifier,
626
+ project_identifier=project_identifier,
627
+ environment_identifier=environment_identifier,
628
+ infra_identifier="full-config-example",
629
+ permanent_installation=False,
630
+ correlation_id="full-config-correlation-123",
631
+ configs=[{
632
+ "collector_image": "harness/service-discovery-collector:main-latest",
633
+ "log_watcher_image": "harness/chaos-log-watcher:main-latest",
634
+ "skip_secure_verify": False,
635
+ "kubernetes": [{
636
+ "namespace": "harness-sd",
637
+ "service_account": "harness-sd-sa",
638
+ "image_pull_policy": "IfNotPresent",
639
+ "run_as_user": 2000,
640
+ "run_as_group": 2000,
641
+ "labels": {
642
+ "app": "service-discovery",
643
+ "env": "dev",
644
+ },
645
+ "annotations": {
646
+ "example.com/annotation": "value",
647
+ },
648
+ "node_selector": {
649
+ "kubernetes.io/os": "linux",
650
+ },
651
+ "resources": [{
652
+ "limits": {
653
+ "cpu": "500m",
654
+ "memory": "512Mi",
655
+ },
656
+ "requests": {
657
+ "cpu": "250m",
658
+ "memory": "256Mi",
659
+ },
660
+ }],
661
+ "tolerations": [{
662
+ "key": "key1",
663
+ "operator": "Equal",
664
+ "value": "value1",
665
+ "effect": "NoSchedule",
666
+ }],
667
+ }],
668
+ "datas": [{
669
+ "enable_node_agent": True,
670
+ "node_agent_selector": "node-role.kubernetes.io/worker=",
671
+ "enable_batch_resources": True,
672
+ "enable_orphaned_pod": True,
673
+ "namespace_selector": "environment=dev",
674
+ "collection_window_in_min": 15,
675
+ "blacklisted_namespaces": [
676
+ "kube-system",
677
+ "kube-public",
678
+ ],
679
+ "observed_namespaces": [
680
+ "default",
681
+ "harness",
682
+ ],
683
+ "crons": [{
684
+ "expression": "0/10 * * * *",
685
+ }],
686
+ }],
687
+ "mtls": [{
688
+ "cert_path": "/etc/certs/tls.crt",
689
+ "key_path": "/etc/certs/tls.key",
690
+ "secret_name": "mtls-secret",
691
+ "url": "https://mtls.example.com:8443",
692
+ }],
693
+ "proxies": [{
694
+ "http_proxy": "http://proxy.example.com:8080",
695
+ "https_proxy": "https://proxy.example.com:8080",
696
+ "no_proxy": "localhost,127.0.0.1,.svc,.cluster.local",
697
+ "url": "https://proxy.example.com",
698
+ }],
699
+ }])
700
+ ```
701
+
702
+ ## Import
703
+
704
+ The `pulumi import` command can be used, for example:
705
+
706
+ Import Project level Service Discovery Agent
707
+
708
+ Account and Org level agents are not supported yet
709
+
710
+ ```sh
711
+ $ pulumi import harness:service/discoveryAgent:DiscoveryAgent example <org_identifier>/<project_identifier>/<environment_identifier>/<infra_identifier>
712
+ ```
713
+
714
+ :param str resource_name: The name of the resource.
715
+ :param pulumi.ResourceOptions opts: Options for the resource.
716
+ :param pulumi.Input[Sequence[pulumi.Input[Union['DiscoveryAgentConfigArgs', 'DiscoveryAgentConfigArgsDict']]]] configs: Configuration for the agent. This is a required field.
717
+ :param pulumi.Input[_builtins.str] correlation_id: Correlation ID for the agent.
718
+ :param pulumi.Input[_builtins.str] environment_identifier: The environment identifier of the agent. This is a required field.
719
+ :param pulumi.Input[_builtins.str] infra_identifier: The infrastructure identifier of the agent. This is a required field.
720
+ :param pulumi.Input[_builtins.str] installation_type: Type of installation for the agent.
721
+ :param pulumi.Input[_builtins.str] name: The name of the agent. This is a required field.
722
+ :param pulumi.Input[_builtins.str] org_identifier: The organization identifier of the agent. Must be 1-64 characters and contain only alphanumeric characters, hyphens, or underscores.
723
+ :param pulumi.Input[_builtins.bool] permanent_installation: Whether this is a permanent installation.
724
+ :param pulumi.Input[_builtins.str] project_identifier: The project identifier of the agent. Must be 1-64 characters and contain only alphanumeric characters, hyphens, or underscores.
725
+ :param pulumi.Input[_builtins.str] webhook_url: Webhook URL for the agent.
726
+ """
727
+ ...
728
+ @overload
729
+ def __init__(__self__,
730
+ resource_name: str,
731
+ args: DiscoveryAgentArgs,
732
+ opts: Optional[pulumi.ResourceOptions] = None):
733
+ """
734
+ Resource for managing a Harness Service Discovery Agent.
735
+
736
+ This resource allows you to create, read, update, and delete a Service Discovery Agent in Harness.
737
+
738
+ ## Example Usage
739
+
740
+ ```python
741
+ import pulumi
742
+ import pulumi_harness as harness
743
+
744
+ example = harness.service.DiscoveryAgent("example",
745
+ name="ExampleAgent",
746
+ org_identifier="your_org_id",
747
+ project_identifier="your_project_id",
748
+ environment_identifier="your_environment_id",
749
+ infra_identifier="your_infra_id",
750
+ configs=[{
751
+ "collector_image": "harness/service-discovery-collector:main-latest",
752
+ "log_watcher_image": "harness/chaos-log-watcher:main-latest",
753
+ "kubernetes": [{
754
+ "namespace": "harness-sd",
755
+ }],
756
+ }])
757
+ ```
758
+
759
+ ### Additional Examples
760
+
761
+ ```python
762
+ import pulumi
763
+ import pulumi_harness as harness
764
+
765
+ # Create a new service discovery agent with minimal configuration
766
+ example = harness.service.DiscoveryAgent("example",
767
+ name="example-agent",
768
+ org_identifier=org_identifier,
769
+ project_identifier=project_identifier,
770
+ environment_identifier=environment_identifier,
771
+ infra_identifier="example-infra",
772
+ configs=[{
773
+ "kubernetes": [{
774
+ "namespace": "harness-sd",
775
+ }],
776
+ }])
777
+ # Create a new service discovery agent with node agent enabled
778
+ node_agent = harness.service.DiscoveryAgent("node_agent",
779
+ name="node-agent-example",
780
+ org_identifier=org_identifier,
781
+ project_identifier=project_identifier,
782
+ environment_identifier=environment_identifier,
783
+ infra_identifier="node-agent-example",
784
+ configs=[{
785
+ "kubernetes": [{
786
+ "namespace": "harness-sd",
787
+ }],
788
+ "datas": [{
789
+ "enable_node_agent": True,
790
+ }],
791
+ }])
792
+ # Create a new service discovery agent with full configuration
793
+ full_config = harness.service.DiscoveryAgent("full_config",
794
+ name="full-config-example",
795
+ org_identifier=org_identifier,
796
+ project_identifier=project_identifier,
797
+ environment_identifier=environment_identifier,
798
+ infra_identifier="full-config-example",
799
+ permanent_installation=False,
800
+ correlation_id="full-config-correlation-123",
801
+ configs=[{
802
+ "collector_image": "harness/service-discovery-collector:main-latest",
803
+ "log_watcher_image": "harness/chaos-log-watcher:main-latest",
804
+ "skip_secure_verify": False,
805
+ "kubernetes": [{
806
+ "namespace": "harness-sd",
807
+ "service_account": "harness-sd-sa",
808
+ "image_pull_policy": "IfNotPresent",
809
+ "run_as_user": 2000,
810
+ "run_as_group": 2000,
811
+ "labels": {
812
+ "app": "service-discovery",
813
+ "env": "dev",
814
+ },
815
+ "annotations": {
816
+ "example.com/annotation": "value",
817
+ },
818
+ "node_selector": {
819
+ "kubernetes.io/os": "linux",
820
+ },
821
+ "resources": [{
822
+ "limits": {
823
+ "cpu": "500m",
824
+ "memory": "512Mi",
825
+ },
826
+ "requests": {
827
+ "cpu": "250m",
828
+ "memory": "256Mi",
829
+ },
830
+ }],
831
+ "tolerations": [{
832
+ "key": "key1",
833
+ "operator": "Equal",
834
+ "value": "value1",
835
+ "effect": "NoSchedule",
836
+ }],
837
+ }],
838
+ "datas": [{
839
+ "enable_node_agent": True,
840
+ "node_agent_selector": "node-role.kubernetes.io/worker=",
841
+ "enable_batch_resources": True,
842
+ "enable_orphaned_pod": True,
843
+ "namespace_selector": "environment=dev",
844
+ "collection_window_in_min": 15,
845
+ "blacklisted_namespaces": [
846
+ "kube-system",
847
+ "kube-public",
848
+ ],
849
+ "observed_namespaces": [
850
+ "default",
851
+ "harness",
852
+ ],
853
+ "crons": [{
854
+ "expression": "0/10 * * * *",
855
+ }],
856
+ }],
857
+ "mtls": [{
858
+ "cert_path": "/etc/certs/tls.crt",
859
+ "key_path": "/etc/certs/tls.key",
860
+ "secret_name": "mtls-secret",
861
+ "url": "https://mtls.example.com:8443",
862
+ }],
863
+ "proxies": [{
864
+ "http_proxy": "http://proxy.example.com:8080",
865
+ "https_proxy": "https://proxy.example.com:8080",
866
+ "no_proxy": "localhost,127.0.0.1,.svc,.cluster.local",
867
+ "url": "https://proxy.example.com",
868
+ }],
869
+ }])
870
+ ```
871
+
872
+ ## Import
873
+
874
+ The `pulumi import` command can be used, for example:
875
+
876
+ Import Project level Service Discovery Agent
877
+
878
+ Account and Org level agents are not supported yet
879
+
880
+ ```sh
881
+ $ pulumi import harness:service/discoveryAgent:DiscoveryAgent example <org_identifier>/<project_identifier>/<environment_identifier>/<infra_identifier>
882
+ ```
883
+
884
+ :param str resource_name: The name of the resource.
885
+ :param DiscoveryAgentArgs args: The arguments to use to populate this resource's properties.
886
+ :param pulumi.ResourceOptions opts: Options for the resource.
887
+ """
888
+ ...
889
+ def __init__(__self__, resource_name: str, *args, **kwargs):
890
+ resource_args, opts = _utilities.get_resource_args_opts(DiscoveryAgentArgs, pulumi.ResourceOptions, *args, **kwargs)
891
+ if resource_args is not None:
892
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
893
+ else:
894
+ __self__._internal_init(resource_name, *args, **kwargs)
895
+
896
+ def _internal_init(__self__,
897
+ resource_name: str,
898
+ opts: Optional[pulumi.ResourceOptions] = None,
899
+ configs: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DiscoveryAgentConfigArgs', 'DiscoveryAgentConfigArgsDict']]]]] = None,
900
+ correlation_id: Optional[pulumi.Input[_builtins.str]] = None,
901
+ environment_identifier: Optional[pulumi.Input[_builtins.str]] = None,
902
+ infra_identifier: Optional[pulumi.Input[_builtins.str]] = None,
903
+ installation_type: Optional[pulumi.Input[_builtins.str]] = None,
904
+ name: Optional[pulumi.Input[_builtins.str]] = None,
905
+ org_identifier: Optional[pulumi.Input[_builtins.str]] = None,
906
+ permanent_installation: Optional[pulumi.Input[_builtins.bool]] = None,
907
+ project_identifier: Optional[pulumi.Input[_builtins.str]] = None,
908
+ webhook_url: Optional[pulumi.Input[_builtins.str]] = None,
909
+ __props__=None):
910
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
911
+ if not isinstance(opts, pulumi.ResourceOptions):
912
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
913
+ if opts.id is None:
914
+ if __props__ is not None:
915
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
916
+ __props__ = DiscoveryAgentArgs.__new__(DiscoveryAgentArgs)
917
+
918
+ if configs is None and not opts.urn:
919
+ raise TypeError("Missing required property 'configs'")
920
+ __props__.__dict__["configs"] = configs
921
+ __props__.__dict__["correlation_id"] = correlation_id
922
+ if environment_identifier is None and not opts.urn:
923
+ raise TypeError("Missing required property 'environment_identifier'")
924
+ __props__.__dict__["environment_identifier"] = environment_identifier
925
+ if infra_identifier is None and not opts.urn:
926
+ raise TypeError("Missing required property 'infra_identifier'")
927
+ __props__.__dict__["infra_identifier"] = infra_identifier
928
+ __props__.__dict__["installation_type"] = installation_type
929
+ __props__.__dict__["name"] = name
930
+ __props__.__dict__["org_identifier"] = org_identifier
931
+ __props__.__dict__["permanent_installation"] = permanent_installation
932
+ __props__.__dict__["project_identifier"] = project_identifier
933
+ __props__.__dict__["webhook_url"] = webhook_url
934
+ __props__.__dict__["created_at"] = None
935
+ __props__.__dict__["created_by"] = None
936
+ __props__.__dict__["description"] = None
937
+ __props__.__dict__["identity"] = None
938
+ __props__.__dict__["installation_details"] = None
939
+ __props__.__dict__["network_map_count"] = None
940
+ __props__.__dict__["removed"] = None
941
+ __props__.__dict__["removed_at"] = None
942
+ __props__.__dict__["service_count"] = None
943
+ __props__.__dict__["tags"] = None
944
+ __props__.__dict__["updated_at"] = None
945
+ __props__.__dict__["updated_by"] = None
946
+ super(DiscoveryAgent, __self__).__init__(
947
+ 'harness:service/discoveryAgent:DiscoveryAgent',
948
+ resource_name,
949
+ __props__,
950
+ opts)
951
+
952
+ @staticmethod
953
+ def get(resource_name: str,
954
+ id: pulumi.Input[str],
955
+ opts: Optional[pulumi.ResourceOptions] = None,
956
+ configs: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DiscoveryAgentConfigArgs', 'DiscoveryAgentConfigArgsDict']]]]] = None,
957
+ correlation_id: Optional[pulumi.Input[_builtins.str]] = None,
958
+ created_at: Optional[pulumi.Input[_builtins.str]] = None,
959
+ created_by: Optional[pulumi.Input[_builtins.str]] = None,
960
+ description: Optional[pulumi.Input[_builtins.str]] = None,
961
+ environment_identifier: Optional[pulumi.Input[_builtins.str]] = None,
962
+ identity: Optional[pulumi.Input[_builtins.str]] = None,
963
+ infra_identifier: Optional[pulumi.Input[_builtins.str]] = None,
964
+ installation_details: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DiscoveryAgentInstallationDetailArgs', 'DiscoveryAgentInstallationDetailArgsDict']]]]] = None,
965
+ installation_type: Optional[pulumi.Input[_builtins.str]] = None,
966
+ name: Optional[pulumi.Input[_builtins.str]] = None,
967
+ network_map_count: Optional[pulumi.Input[_builtins.int]] = None,
968
+ org_identifier: Optional[pulumi.Input[_builtins.str]] = None,
969
+ permanent_installation: Optional[pulumi.Input[_builtins.bool]] = None,
970
+ project_identifier: Optional[pulumi.Input[_builtins.str]] = None,
971
+ removed: Optional[pulumi.Input[_builtins.bool]] = None,
972
+ removed_at: Optional[pulumi.Input[_builtins.str]] = None,
973
+ service_count: Optional[pulumi.Input[_builtins.int]] = None,
974
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
975
+ updated_at: Optional[pulumi.Input[_builtins.str]] = None,
976
+ updated_by: Optional[pulumi.Input[_builtins.str]] = None,
977
+ webhook_url: Optional[pulumi.Input[_builtins.str]] = None) -> 'DiscoveryAgent':
978
+ """
979
+ Get an existing DiscoveryAgent resource's state with the given name, id, and optional extra
980
+ properties used to qualify the lookup.
981
+
982
+ :param str resource_name: The unique name of the resulting resource.
983
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
984
+ :param pulumi.ResourceOptions opts: Options for the resource.
985
+ :param pulumi.Input[Sequence[pulumi.Input[Union['DiscoveryAgentConfigArgs', 'DiscoveryAgentConfigArgsDict']]]] configs: Configuration for the agent. This is a required field.
986
+ :param pulumi.Input[_builtins.str] correlation_id: Correlation ID for the agent.
987
+ :param pulumi.Input[_builtins.str] created_at: Timestamp when the agent was created.
988
+ :param pulumi.Input[_builtins.str] created_by: User who created the agent.
989
+ :param pulumi.Input[_builtins.str] description: Description of the agent.
990
+ :param pulumi.Input[_builtins.str] environment_identifier: The environment identifier of the agent. This is a required field.
991
+ :param pulumi.Input[_builtins.str] identity: The unique identity of the agent.
992
+ :param pulumi.Input[_builtins.str] infra_identifier: The infrastructure identifier of the agent. This is a required field.
993
+ :param pulumi.Input[Sequence[pulumi.Input[Union['DiscoveryAgentInstallationDetailArgs', 'DiscoveryAgentInstallationDetailArgsDict']]]] installation_details: Installation details of the agent.
994
+ :param pulumi.Input[_builtins.str] installation_type: Type of installation for the agent.
995
+ :param pulumi.Input[_builtins.str] name: The name of the agent. This is a required field.
996
+ :param pulumi.Input[_builtins.int] network_map_count: Number of network maps associated with this agent.
997
+ :param pulumi.Input[_builtins.str] org_identifier: The organization identifier of the agent. Must be 1-64 characters and contain only alphanumeric characters, hyphens, or underscores.
998
+ :param pulumi.Input[_builtins.bool] permanent_installation: Whether this is a permanent installation.
999
+ :param pulumi.Input[_builtins.str] project_identifier: The project identifier of the agent. Must be 1-64 characters and contain only alphanumeric characters, hyphens, or underscores.
1000
+ :param pulumi.Input[_builtins.bool] removed: Whether the agent has been removed.
1001
+ :param pulumi.Input[_builtins.str] removed_at: Timestamp when the agent was removed.
1002
+ :param pulumi.Input[_builtins.int] service_count: Number of services managed by this agent.
1003
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: List of resource tags for the agent.
1004
+ :param pulumi.Input[_builtins.str] updated_at: Timestamp when the agent was last updated.
1005
+ :param pulumi.Input[_builtins.str] updated_by: User who last updated the agent.
1006
+ :param pulumi.Input[_builtins.str] webhook_url: Webhook URL for the agent.
1007
+ """
1008
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
1009
+
1010
+ __props__ = _DiscoveryAgentState.__new__(_DiscoveryAgentState)
1011
+
1012
+ __props__.__dict__["configs"] = configs
1013
+ __props__.__dict__["correlation_id"] = correlation_id
1014
+ __props__.__dict__["created_at"] = created_at
1015
+ __props__.__dict__["created_by"] = created_by
1016
+ __props__.__dict__["description"] = description
1017
+ __props__.__dict__["environment_identifier"] = environment_identifier
1018
+ __props__.__dict__["identity"] = identity
1019
+ __props__.__dict__["infra_identifier"] = infra_identifier
1020
+ __props__.__dict__["installation_details"] = installation_details
1021
+ __props__.__dict__["installation_type"] = installation_type
1022
+ __props__.__dict__["name"] = name
1023
+ __props__.__dict__["network_map_count"] = network_map_count
1024
+ __props__.__dict__["org_identifier"] = org_identifier
1025
+ __props__.__dict__["permanent_installation"] = permanent_installation
1026
+ __props__.__dict__["project_identifier"] = project_identifier
1027
+ __props__.__dict__["removed"] = removed
1028
+ __props__.__dict__["removed_at"] = removed_at
1029
+ __props__.__dict__["service_count"] = service_count
1030
+ __props__.__dict__["tags"] = tags
1031
+ __props__.__dict__["updated_at"] = updated_at
1032
+ __props__.__dict__["updated_by"] = updated_by
1033
+ __props__.__dict__["webhook_url"] = webhook_url
1034
+ return DiscoveryAgent(resource_name, opts=opts, __props__=__props__)
1035
+
1036
+ @_builtins.property
1037
+ @pulumi.getter
1038
+ def configs(self) -> pulumi.Output[Sequence['outputs.DiscoveryAgentConfig']]:
1039
+ """
1040
+ Configuration for the agent. This is a required field.
1041
+ """
1042
+ return pulumi.get(self, "configs")
1043
+
1044
+ @_builtins.property
1045
+ @pulumi.getter(name="correlationId")
1046
+ def correlation_id(self) -> pulumi.Output[_builtins.str]:
1047
+ """
1048
+ Correlation ID for the agent.
1049
+ """
1050
+ return pulumi.get(self, "correlation_id")
1051
+
1052
+ @_builtins.property
1053
+ @pulumi.getter(name="createdAt")
1054
+ def created_at(self) -> pulumi.Output[_builtins.str]:
1055
+ """
1056
+ Timestamp when the agent was created.
1057
+ """
1058
+ return pulumi.get(self, "created_at")
1059
+
1060
+ @_builtins.property
1061
+ @pulumi.getter(name="createdBy")
1062
+ def created_by(self) -> pulumi.Output[_builtins.str]:
1063
+ """
1064
+ User who created the agent.
1065
+ """
1066
+ return pulumi.get(self, "created_by")
1067
+
1068
+ @_builtins.property
1069
+ @pulumi.getter
1070
+ def description(self) -> pulumi.Output[_builtins.str]:
1071
+ """
1072
+ Description of the agent.
1073
+ """
1074
+ return pulumi.get(self, "description")
1075
+
1076
+ @_builtins.property
1077
+ @pulumi.getter(name="environmentIdentifier")
1078
+ def environment_identifier(self) -> pulumi.Output[_builtins.str]:
1079
+ """
1080
+ The environment identifier of the agent. This is a required field.
1081
+ """
1082
+ return pulumi.get(self, "environment_identifier")
1083
+
1084
+ @_builtins.property
1085
+ @pulumi.getter
1086
+ def identity(self) -> pulumi.Output[_builtins.str]:
1087
+ """
1088
+ The unique identity of the agent.
1089
+ """
1090
+ return pulumi.get(self, "identity")
1091
+
1092
+ @_builtins.property
1093
+ @pulumi.getter(name="infraIdentifier")
1094
+ def infra_identifier(self) -> pulumi.Output[_builtins.str]:
1095
+ """
1096
+ The infrastructure identifier of the agent. This is a required field.
1097
+ """
1098
+ return pulumi.get(self, "infra_identifier")
1099
+
1100
+ @_builtins.property
1101
+ @pulumi.getter(name="installationDetails")
1102
+ def installation_details(self) -> pulumi.Output[Sequence['outputs.DiscoveryAgentInstallationDetail']]:
1103
+ """
1104
+ Installation details of the agent.
1105
+ """
1106
+ return pulumi.get(self, "installation_details")
1107
+
1108
+ @_builtins.property
1109
+ @pulumi.getter(name="installationType")
1110
+ def installation_type(self) -> pulumi.Output[Optional[_builtins.str]]:
1111
+ """
1112
+ Type of installation for the agent.
1113
+ """
1114
+ return pulumi.get(self, "installation_type")
1115
+
1116
+ @_builtins.property
1117
+ @pulumi.getter
1118
+ def name(self) -> pulumi.Output[_builtins.str]:
1119
+ """
1120
+ The name of the agent. This is a required field.
1121
+ """
1122
+ return pulumi.get(self, "name")
1123
+
1124
+ @_builtins.property
1125
+ @pulumi.getter(name="networkMapCount")
1126
+ def network_map_count(self) -> pulumi.Output[_builtins.int]:
1127
+ """
1128
+ Number of network maps associated with this agent.
1129
+ """
1130
+ return pulumi.get(self, "network_map_count")
1131
+
1132
+ @_builtins.property
1133
+ @pulumi.getter(name="orgIdentifier")
1134
+ def org_identifier(self) -> pulumi.Output[Optional[_builtins.str]]:
1135
+ """
1136
+ The organization identifier of the agent. Must be 1-64 characters and contain only alphanumeric characters, hyphens, or underscores.
1137
+ """
1138
+ return pulumi.get(self, "org_identifier")
1139
+
1140
+ @_builtins.property
1141
+ @pulumi.getter(name="permanentInstallation")
1142
+ def permanent_installation(self) -> pulumi.Output[Optional[_builtins.bool]]:
1143
+ """
1144
+ Whether this is a permanent installation.
1145
+ """
1146
+ return pulumi.get(self, "permanent_installation")
1147
+
1148
+ @_builtins.property
1149
+ @pulumi.getter(name="projectIdentifier")
1150
+ def project_identifier(self) -> pulumi.Output[Optional[_builtins.str]]:
1151
+ """
1152
+ The project identifier of the agent. Must be 1-64 characters and contain only alphanumeric characters, hyphens, or underscores.
1153
+ """
1154
+ return pulumi.get(self, "project_identifier")
1155
+
1156
+ @_builtins.property
1157
+ @pulumi.getter
1158
+ def removed(self) -> pulumi.Output[_builtins.bool]:
1159
+ """
1160
+ Whether the agent has been removed.
1161
+ """
1162
+ return pulumi.get(self, "removed")
1163
+
1164
+ @_builtins.property
1165
+ @pulumi.getter(name="removedAt")
1166
+ def removed_at(self) -> pulumi.Output[_builtins.str]:
1167
+ """
1168
+ Timestamp when the agent was removed.
1169
+ """
1170
+ return pulumi.get(self, "removed_at")
1171
+
1172
+ @_builtins.property
1173
+ @pulumi.getter(name="serviceCount")
1174
+ def service_count(self) -> pulumi.Output[_builtins.int]:
1175
+ """
1176
+ Number of services managed by this agent.
1177
+ """
1178
+ return pulumi.get(self, "service_count")
1179
+
1180
+ @_builtins.property
1181
+ @pulumi.getter
1182
+ def tags(self) -> pulumi.Output[Sequence[_builtins.str]]:
1183
+ """
1184
+ List of resource tags for the agent.
1185
+ """
1186
+ return pulumi.get(self, "tags")
1187
+
1188
+ @_builtins.property
1189
+ @pulumi.getter(name="updatedAt")
1190
+ def updated_at(self) -> pulumi.Output[_builtins.str]:
1191
+ """
1192
+ Timestamp when the agent was last updated.
1193
+ """
1194
+ return pulumi.get(self, "updated_at")
1195
+
1196
+ @_builtins.property
1197
+ @pulumi.getter(name="updatedBy")
1198
+ def updated_by(self) -> pulumi.Output[_builtins.str]:
1199
+ """
1200
+ User who last updated the agent.
1201
+ """
1202
+ return pulumi.get(self, "updated_by")
1203
+
1204
+ @_builtins.property
1205
+ @pulumi.getter(name="webhookUrl")
1206
+ def webhook_url(self) -> pulumi.Output[Optional[_builtins.str]]:
1207
+ """
1208
+ Webhook URL for the agent.
1209
+ """
1210
+ return pulumi.get(self, "webhook_url")
1211
+