From 5615be37c0f5b28e9da739208544b7ac6ca1f3e6 Mon Sep 17 00:00:00 2001 From: Lee Briggs Date: Tue, 1 Nov 2022 08:50:16 -0700 Subject: [PATCH] update dynatrace provider to 1.14.1 --- .github/renovate.json | 2 +- go.work.sum | 21 + .../cmd/pulumi-resource-dynatrace/schema.json | 2187 ++++++++- provider/go.mod | 2 +- provider/resources.go | 14 + .../Dynatrace/AnsibleTowerNotification.cs | 244 + sdk/dotnet/Dynatrace/EmailNotification.cs | 274 ++ sdk/dotnet/Dynatrace/FrequentIssues.cs | 130 + sdk/dotnet/Dynatrace/GetAlertingProfile.cs | 139 + sdk/dotnet/Dynatrace/GetCredentials.cs | 253 +- .../AutotagEntitySelectorBasedRuleArgs.cs | 3 + .../AutotagEntitySelectorBasedRuleGetArgs.cs | 3 + .../Inputs/DashboardDashboardMetadataArgs.cs | 6 + .../DashboardDashboardMetadataGetArgs.cs | 6 + .../Dynatrace/Inputs/MaintenanceFilterArgs.cs | 33 + .../Inputs/MaintenanceFilterFilterArgs.cs | 43 + .../Inputs/MaintenanceFilterFilterGetArgs.cs | 43 + .../Inputs/MaintenanceFilterGetArgs.cs | 33 + .../MaintenanceGeneralPropertiesArgs.cs | 51 + .../MaintenanceGeneralPropertiesGetArgs.cs | 51 + .../Inputs/MaintenanceScheduleArgs.cs | 51 + .../MaintenanceScheduleDailyRecurrenceArgs.cs | 27 + ...intenanceScheduleDailyRecurrenceGetArgs.cs | 27 + ...eduleDailyRecurrenceRecurrenceRangeArgs.cs | 27 + ...leDailyRecurrenceRecurrenceRangeGetArgs.cs | 27 + ...ceScheduleDailyRecurrenceTimeWindowArgs.cs | 30 + ...cheduleDailyRecurrenceTimeWindowGetArgs.cs | 30 + .../Inputs/MaintenanceScheduleGetArgs.cs | 51 + ...aintenanceScheduleMonthlyRecurrenceArgs.cs | 30 + ...tenanceScheduleMonthlyRecurrenceGetArgs.cs | 30 + ...uleMonthlyRecurrenceRecurrenceRangeArgs.cs | 27 + ...MonthlyRecurrenceRecurrenceRangeGetArgs.cs | 27 + ...ScheduleMonthlyRecurrenceTimeWindowArgs.cs | 30 + ...eduleMonthlyRecurrenceTimeWindowGetArgs.cs | 30 + .../MaintenanceScheduleOnceRecurrenceArgs.cs | 30 + ...aintenanceScheduleOnceRecurrenceGetArgs.cs | 30 + ...MaintenanceScheduleWeeklyRecurrenceArgs.cs | 30 + ...ntenanceScheduleWeeklyRecurrenceGetArgs.cs | 30 + ...duleWeeklyRecurrenceRecurrenceRangeArgs.cs | 27 + ...eWeeklyRecurrenceRecurrenceRangeGetArgs.cs | 27 + ...eScheduleWeeklyRecurrenceTimeWindowArgs.cs | 30 + ...heduleWeeklyRecurrenceTimeWindowGetArgs.cs | 30 + .../Inputs/WebhookNotificationHeadersArgs.cs | 33 + .../WebhookNotificationHeadersGetArgs.cs | 33 + .../WebhookNotificationHeadersHeaderArgs.cs | 42 + ...WebhookNotificationHeadersHeaderGetArgs.cs | 42 + .../Inputs/XmattersNotificationHeadersArgs.cs | 33 + .../XmattersNotificationHeadersGetArgs.cs | 33 + .../XmattersNotificationHeadersHeaderArgs.cs | 42 + ...mattersNotificationHeadersHeaderGetArgs.cs | 42 + sdk/dotnet/Dynatrace/JiraNotification.cs | 280 ++ sdk/dotnet/Dynatrace/Maintenance.cs | 160 + sdk/dotnet/Dynatrace/OpsGenieNotification.cs | 208 + .../Outputs/AutotagEntitySelectorBasedRule.cs | 4 + .../Outputs/DashboardDashboardMetadata.cs | 7 + .../Dynatrace/Outputs/MaintenanceFilter.cs | 28 + .../Outputs/MaintenanceFilterFilter.cs | 38 + .../Outputs/MaintenanceGeneralProperties.cs | 57 + .../Dynatrace/Outputs/MaintenanceSchedule.cs | 57 + .../MaintenanceScheduleDailyRecurrence.cs | 30 + ...eScheduleDailyRecurrenceRecurrenceRange.cs | 30 + ...enanceScheduleDailyRecurrenceTimeWindow.cs | 34 + .../MaintenanceScheduleMonthlyRecurrence.cs | 34 + ...cheduleMonthlyRecurrenceRecurrenceRange.cs | 30 + ...anceScheduleMonthlyRecurrenceTimeWindow.cs | 34 + .../MaintenanceScheduleOnceRecurrence.cs | 34 + .../MaintenanceScheduleWeeklyRecurrence.cs | 34 + ...ScheduleWeeklyRecurrenceRecurrenceRange.cs | 30 + ...nanceScheduleWeeklyRecurrenceTimeWindow.cs | 34 + .../Outputs/WebhookNotificationHeaders.cs | 28 + .../WebhookNotificationHeadersHeader.cs | 37 + .../Outputs/XmattersNotificationHeaders.cs | 28 + .../XmattersNotificationHeadersHeader.cs | 37 + sdk/dotnet/Dynatrace/PagerDutyNotification.cs | 208 + .../Dynatrace/ServiceNowNotification.cs | 280 ++ sdk/dotnet/Dynatrace/SlackNotification.cs | 208 + sdk/dotnet/Dynatrace/TrrelloNotification.cs | 256 + sdk/dotnet/Dynatrace/VictorOpsNotification.cs | 208 + sdk/dotnet/Dynatrace/WebhookNotification.cs | 238 + sdk/dotnet/Dynatrace/XmattersNotification.cs | 202 + sdk/go/dynatrace/ansibleTowerNotification.go | 338 ++ sdk/go/dynatrace/emailNotification.go | 346 ++ sdk/go/dynatrace/frequentIssues.go | 253 + sdk/go/dynatrace/getAlertingProfile.go | 123 + sdk/go/dynatrace/getCredentials.go | 120 +- sdk/go/dynatrace/init.go | 91 + sdk/go/dynatrace/jiraNotification.go | 380 ++ sdk/go/dynatrace/maintenance.go | 265 + sdk/go/dynatrace/opsGenieNotification.go | 308 ++ sdk/go/dynatrace/pagerDutyNotification.go | 308 ++ sdk/go/dynatrace/pulumiTypes.go | 4362 +++++++++-------- sdk/go/dynatrace/pulumiTypes1.go | 2752 +++++++++++ sdk/go/dynatrace/serviceNowNotification.go | 371 ++ sdk/go/dynatrace/slackNotification.go | 311 ++ sdk/go/dynatrace/trrelloNotification.go | 373 ++ sdk/go/dynatrace/victorOpsNotification.go | 308 ++ sdk/go/dynatrace/webhookNotification.go | 346 ++ sdk/go/dynatrace/xmattersNotification.go | 316 ++ .../dynatrace/AnsibleTowerNotification.class | Bin 0 -> 5728 bytes ...AnsibleTowerNotificationArgs$Builder.class | Bin 0 -> 3937 bytes .../AnsibleTowerNotificationArgs.class | Bin 0 -> 2764 bytes .../pulumi/dynatrace/DynatraceFunctions.class | Bin 21635 -> 23377 bytes .../pulumi/dynatrace/EmailNotification.class | Bin 0 -> 5714 bytes .../EmailNotificationArgs$Builder.class | Bin 0 -> 4948 bytes .../dynatrace/EmailNotificationArgs.class | Bin 0 -> 3053 bytes .../com/pulumi/dynatrace/FrequentIssues.class | Bin 0 -> 4489 bytes .../FrequentIssuesArgs$Builder.class | Bin 0 -> 2322 bytes .../pulumi/dynatrace/FrequentIssuesArgs.class | Bin 0 -> 1651 bytes .../pulumi/dynatrace/JiraNotification.class | Bin 0 -> 5827 bytes .../JiraNotificationArgs$Builder.class | Bin 0 -> 4519 bytes .../dynatrace/JiraNotificationArgs.class | Bin 0 -> 2943 bytes .../com/pulumi/dynatrace/Maintenance.class | Bin 0 -> 5417 bytes .../dynatrace/MaintenanceArgs$Builder.class | Bin 0 -> 4166 bytes .../pulumi/dynatrace/MaintenanceArgs.class | Bin 0 -> 2509 bytes .../dynatrace/OpsGenieNotification.class | Bin 0 -> 5354 bytes .../OpsGenieNotificationArgs$Builder.class | Bin 0 -> 3407 bytes .../dynatrace/OpsGenieNotificationArgs.class | Bin 0 -> 2410 bytes .../dynatrace/PagerDutyNotification.class | Bin 0 -> 5371 bytes .../PagerDutyNotificationArgs$Builder.class | Bin 0 -> 3421 bytes .../dynatrace/PagerDutyNotificationArgs.class | Bin 0 -> 2419 bytes .../dynatrace/ServiceNowNotification.class | Bin 0 -> 5997 bytes .../ServiceNowNotificationArgs$Builder.class | Bin 0 -> 4395 bytes .../ServiceNowNotificationArgs.class | Bin 0 -> 3062 bytes .../pulumi/dynatrace/SlackNotification.class | Bin 0 -> 5156 bytes .../SlackNotificationArgs$Builder.class | Bin 0 -> 3428 bytes .../dynatrace/SlackNotificationArgs.class | Bin 0 -> 2382 bytes .../dynatrace/TrrelloNotification.class | Bin 0 -> 5695 bytes .../TrrelloNotificationArgs$Builder.class | Bin 0 -> 4581 bytes .../dynatrace/TrrelloNotificationArgs.class | Bin 0 -> 2985 bytes .../dynatrace/VictorOpsNotification.class | Bin 0 -> 5374 bytes .../VictorOpsNotificationArgs$Builder.class | Bin 0 -> 3427 bytes .../dynatrace/VictorOpsNotificationArgs.class | Bin 0 -> 2422 bytes .../dynatrace/WebhookNotification.class | Bin 0 -> 5824 bytes .../WebhookNotificationArgs$Builder.class | Bin 0 -> 4502 bytes .../dynatrace/WebhookNotificationArgs.class | Bin 0 -> 3121 bytes .../dynatrace/XmattersNotification.class | Bin 0 -> 5550 bytes .../XmattersNotificationArgs$Builder.class | Bin 0 -> 4049 bytes .../dynatrace/XmattersNotificationArgs.class | Bin 0 -> 2826 bytes ...nsibleTowerNotificationState$Builder.class | Bin 0 -> 3695 bytes .../AnsibleTowerNotificationState.class | Bin 0 -> 2735 bytes ...gEntitySelectorBasedRuleArgs$Builder.class | Bin 2853 -> 3083 bytes .../AutotagEntitySelectorBasedRuleArgs.class | Bin 2212 -> 2359 bytes ...shboardDashboardMetadataArgs$Builder.class | Bin 6683 -> 6906 bytes .../DashboardDashboardMetadataArgs.class | Bin 3953 -> 4093 bytes .../EmailNotificationState$Builder.class | Bin 0 -> 4759 bytes .../inputs/EmailNotificationState.class | Bin 0 -> 2957 bytes .../inputs/FrequentIssuesState$Builder.class | Bin 0 -> 2198 bytes .../inputs/FrequentIssuesState.class | Bin 0 -> 1836 bytes .../GetAlertingProfileArgs$Builder.class | Bin 0 -> 1825 bytes .../inputs/GetAlertingProfileArgs.class | Bin 0 -> 1431 bytes .../GetAlertingProfilePlainArgs$Builder.class | Bin 0 -> 1377 bytes .../inputs/GetAlertingProfilePlainArgs.class | Bin 0 -> 1335 bytes .../inputs/GetCredentialsArgs$Builder.class | Bin 1991 -> 2167 bytes .../dynatrace/inputs/GetCredentialsArgs.class | Bin 1607 -> 1800 bytes .../GetCredentialsPlainArgs$Builder.class | Bin 1501 -> 1483 bytes .../inputs/GetCredentialsPlainArgs.class | Bin 1586 -> 1737 bytes .../JiraNotificationState$Builder.class | Bin 0 -> 4038 bytes .../inputs/JiraNotificationState.class | Bin 0 -> 2944 bytes .../MaintenanceFilterArgs$Builder.class | Bin 0 -> 2448 bytes .../inputs/MaintenanceFilterArgs.class | Bin 0 -> 1673 bytes .../MaintenanceFilterFilterArgs$Builder.class | Bin 0 -> 3354 bytes .../inputs/MaintenanceFilterFilterArgs.class | Bin 0 -> 2199 bytes ...tenanceGeneralPropertiesArgs$Builder.class | Bin 0 -> 3311 bytes .../MaintenanceGeneralPropertiesArgs.class | Bin 0 -> 2423 bytes .../MaintenanceScheduleArgs$Builder.class | Bin 0 -> 4688 bytes .../inputs/MaintenanceScheduleArgs.class | Bin 0 -> 3067 bytes ...eScheduleDailyRecurrenceArgs$Builder.class | Bin 0 -> 3091 bytes ...intenanceScheduleDailyRecurrenceArgs.class | Bin 0 -> 2067 bytes ...ecurrenceRecurrenceRangeArgs$Builder.class | Bin 0 -> 2431 bytes ...leDailyRecurrenceRecurrenceRangeArgs.class | Bin 0 -> 1832 bytes ...ailyRecurrenceTimeWindowArgs$Builder.class | Bin 0 -> 2669 bytes ...cheduleDailyRecurrenceTimeWindowArgs.class | Bin 0 -> 1932 bytes ...cheduleMonthlyRecurrenceArgs$Builder.class | Bin 0 -> 3723 bytes ...tenanceScheduleMonthlyRecurrenceArgs.class | Bin 0 -> 2331 bytes ...ecurrenceRecurrenceRangeArgs$Builder.class | Bin 0 -> 2451 bytes ...MonthlyRecurrenceRecurrenceRangeArgs.class | Bin 0 -> 1848 bytes ...thlyRecurrenceTimeWindowArgs$Builder.class | Bin 0 -> 2689 bytes ...eduleMonthlyRecurrenceTimeWindowArgs.class | Bin 0 -> 1948 bytes ...ceScheduleOnceRecurrenceArgs$Builder.class | Bin 0 -> 2559 bytes ...aintenanceScheduleOnceRecurrenceArgs.class | Bin 0 -> 1844 bytes ...ScheduleWeeklyRecurrenceArgs$Builder.class | Bin 0 -> 3695 bytes ...ntenanceScheduleWeeklyRecurrenceArgs.class | Bin 0 -> 2316 bytes ...ecurrenceRecurrenceRangeArgs$Builder.class | Bin 0 -> 2441 bytes ...eWeeklyRecurrenceRecurrenceRangeArgs.class | Bin 0 -> 1840 bytes ...eklyRecurrenceTimeWindowArgs$Builder.class | Bin 0 -> 2679 bytes ...heduleWeeklyRecurrenceTimeWindowArgs.class | Bin 0 -> 1940 bytes .../inputs/MaintenanceState$Builder.class | Bin 0 -> 4099 bytes .../dynatrace/inputs/MaintenanceState.class | Bin 0 -> 2569 bytes .../OpsGenieNotificationState$Builder.class | Bin 0 -> 3181 bytes .../inputs/OpsGenieNotificationState.class | Bin 0 -> 2403 bytes .../PagerDutyNotificationState$Builder.class | Bin 0 -> 3194 bytes .../inputs/PagerDutyNotificationState.class | Bin 0 -> 2412 bytes .../ServiceNowNotificationState$Builder.class | Bin 0 -> 4103 bytes .../inputs/ServiceNowNotificationState.class | Bin 0 -> 2985 bytes .../SlackNotificationState$Builder.class | Bin 0 -> 3143 bytes .../inputs/SlackNotificationState.class | Bin 0 -> 2377 bytes .../TrrelloNotificationState$Builder.class | Bin 0 -> 4092 bytes .../inputs/TrrelloNotificationState.class | Bin 0 -> 2986 bytes .../VictorOpsNotificationState$Builder.class | Bin 0 -> 3197 bytes .../inputs/VictorOpsNotificationState.class | Bin 0 -> 2415 bytes ...bhookNotificationHeadersArgs$Builder.class | Bin 0 -> 2674 bytes .../WebhookNotificationHeadersArgs.class | Bin 0 -> 1639 bytes ...otificationHeadersHeaderArgs$Builder.class | Bin 0 -> 2482 bytes ...WebhookNotificationHeadersHeaderArgs.class | Bin 0 -> 2045 bytes .../WebhookNotificationState$Builder.class | Bin 0 -> 4295 bytes .../inputs/WebhookNotificationState.class | Bin 0 -> 3042 bytes ...ttersNotificationHeadersArgs$Builder.class | Bin 0 -> 2692 bytes .../XmattersNotificationHeadersArgs.class | Bin 0 -> 1649 bytes ...otificationHeadersHeaderArgs$Builder.class | Bin 0 -> 2492 bytes ...mattersNotificationHeadersHeaderArgs.class | Bin 0 -> 2053 bytes .../XmattersNotificationState$Builder.class | Bin 0 -> 3842 bytes .../inputs/XmattersNotificationState.class | Bin 0 -> 2747 bytes ...totagEntitySelectorBasedRule$Builder.class | Bin 2292 -> 2469 bytes .../AutotagEntitySelectorBasedRule.class | Bin 1762 -> 1880 bytes .../DashboardDashboardMetadata$Builder.class | Bin 4622 -> 4792 bytes .../outputs/DashboardDashboardMetadata.class | Bin 3128 -> 3239 bytes .../GetAlertingProfileResult$Builder.class | Bin 0 -> 1690 bytes .../outputs/GetAlertingProfileResult.class | Bin 0 -> 1183 bytes .../GetCredentialsResult$Builder.class | Bin 2092 -> 2081 bytes .../outputs/GetCredentialsResult.class | Bin 1456 -> 1595 bytes .../outputs/MaintenanceFilter$Builder.class | Bin 0 -> 2163 bytes .../dynatrace/outputs/MaintenanceFilter.class | Bin 0 -> 1341 bytes .../MaintenanceFilterFilter$Builder.class | Bin 0 -> 2832 bytes .../outputs/MaintenanceFilterFilter.class | Bin 0 -> 1880 bytes ...MaintenanceGeneralProperties$Builder.class | Bin 0 -> 2415 bytes .../MaintenanceGeneralProperties.class | Bin 0 -> 1817 bytes .../outputs/MaintenanceSchedule$Builder.class | Bin 0 -> 3076 bytes .../outputs/MaintenanceSchedule.class | Bin 0 -> 2342 bytes ...nanceScheduleDailyRecurrence$Builder.class | Bin 0 -> 2285 bytes .../MaintenanceScheduleDailyRecurrence.class | Bin 0 -> 1564 bytes ...ilyRecurrenceRecurrenceRange$Builder.class | Bin 0 -> 1900 bytes ...heduleDailyRecurrenceRecurrenceRange.class | Bin 0 -> 1393 bytes ...uleDailyRecurrenceTimeWindow$Builder.class | Bin 0 -> 2013 bytes ...nceScheduleDailyRecurrenceTimeWindow.class | Bin 0 -> 1443 bytes ...nceScheduleMonthlyRecurrence$Builder.class | Bin 0 -> 2614 bytes ...MaintenanceScheduleMonthlyRecurrence.class | Bin 0 -> 1726 bytes ...hlyRecurrenceRecurrenceRange$Builder.class | Bin 0 -> 1916 bytes ...duleMonthlyRecurrenceRecurrenceRange.class | Bin 0 -> 1409 bytes ...eMonthlyRecurrenceTimeWindow$Builder.class | Bin 0 -> 2029 bytes ...eScheduleMonthlyRecurrenceTimeWindow.class | Bin 0 -> 1459 bytes ...enanceScheduleOnceRecurrence$Builder.class | Bin 0 -> 1925 bytes .../MaintenanceScheduleOnceRecurrence.class | Bin 0 -> 1355 bytes ...anceScheduleWeeklyRecurrence$Builder.class | Bin 0 -> 2594 bytes .../MaintenanceScheduleWeeklyRecurrence.class | Bin 0 -> 1711 bytes ...klyRecurrenceRecurrenceRange$Builder.class | Bin 0 -> 1908 bytes ...eduleWeeklyRecurrenceRecurrenceRange.class | Bin 0 -> 1401 bytes ...leWeeklyRecurrenceTimeWindow$Builder.class | Bin 0 -> 2021 bytes ...ceScheduleWeeklyRecurrenceTimeWindow.class | Bin 0 -> 1451 bytes .../WebhookNotificationHeaders$Builder.class | Bin 0 -> 2203 bytes .../outputs/WebhookNotificationHeaders.class | Bin 0 -> 1312 bytes ...ookNotificationHeadersHeader$Builder.class | Bin 0 -> 2018 bytes .../WebhookNotificationHeadersHeader.class | Bin 0 -> 1591 bytes .../XmattersNotificationHeaders$Builder.class | Bin 0 -> 2217 bytes .../outputs/XmattersNotificationHeaders.class | Bin 0 -> 1322 bytes ...ersNotificationHeadersHeader$Builder.class | Bin 0 -> 2026 bytes .../XmattersNotificationHeadersHeader.class | Bin 0 -> 1599 bytes .../compileJava/previous-compilation-data.bin | Bin 211405 -> 219597 bytes .../dynatrace/AnsibleTowerNotification.java | 185 + .../AnsibleTowerNotificationArgs.java | 347 ++ .../pulumi/dynatrace/DynatraceFunctions.java | 647 ++- .../pulumi/dynatrace/EmailNotification.java | 196 + .../dynatrace/EmailNotificationArgs.java | 415 ++ .../com/pulumi/dynatrace/FrequentIssues.java | 109 + .../pulumi/dynatrace/FrequentIssuesArgs.java | 158 + .../pulumi/dynatrace/JiraNotification.java | 213 + .../dynatrace/JiraNotificationArgs.java | 425 ++ .../com/pulumi/dynatrace/Maintenance.java | 128 + .../com/pulumi/dynatrace/MaintenanceArgs.java | 210 + .../dynatrace/OpsGenieNotification.java | 157 + .../dynatrace/OpsGenieNotificationArgs.java | 273 ++ .../dynatrace/PagerDutyNotification.java | 157 + .../dynatrace/PagerDutyNotificationArgs.java | 273 ++ .../dynatrace/ServiceNowNotification.java | 213 + .../dynatrace/ServiceNowNotificationArgs.java | 422 ++ .../pulumi/dynatrace/SlackNotification.java | 156 + .../dynatrace/SlackNotificationArgs.java | 274 ++ .../pulumi/dynatrace/TrrelloNotification.java | 209 + .../dynatrace/TrrelloNotificationArgs.java | 425 ++ .../dynatrace/VictorOpsNotification.java | 157 + .../dynatrace/VictorOpsNotificationArgs.java | 273 ++ .../pulumi/dynatrace/WebhookNotification.java | 196 + .../dynatrace/WebhookNotificationArgs.java | 385 ++ .../dynatrace/XmattersNotification.java | 168 + .../dynatrace/XmattersNotificationArgs.java | 311 ++ .../inputs/AnsibleTowerNotificationState.java | 343 ++ .../AutotagEntitySelectorBasedRuleArgs.java | 17 + .../DashboardDashboardMetadataArgs.java | 37 + .../inputs/EmailNotificationState.java | 411 ++ .../dynatrace/inputs/FrequentIssuesState.java | 157 + .../inputs/GetAlertingProfileArgs.java | 62 + .../inputs/GetAlertingProfilePlainArgs.java | 57 + .../dynatrace/inputs/GetCredentialsArgs.java | 113 +- .../inputs/GetCredentialsPlainArgs.java | 83 +- .../inputs/JiraNotificationState.java | 417 ++ .../inputs/MaintenanceFilterArgs.java | 94 + .../inputs/MaintenanceFilterFilterArgs.java | 123 + .../MaintenanceGeneralPropertiesArgs.java | 235 + .../inputs/MaintenanceScheduleArgs.java | 236 + ...aintenanceScheduleDailyRecurrenceArgs.java | 81 + ...uleDailyRecurrenceRecurrenceRangeArgs.java | 80 + ...ScheduleDailyRecurrenceTimeWindowArgs.java | 98 + ...ntenanceScheduleMonthlyRecurrenceArgs.java | 100 + ...eMonthlyRecurrenceRecurrenceRangeArgs.java | 80 + ...heduleMonthlyRecurrenceTimeWindowArgs.java | 98 + ...MaintenanceScheduleOnceRecurrenceArgs.java | 98 + ...intenanceScheduleWeeklyRecurrenceArgs.java | 100 + ...leWeeklyRecurrenceRecurrenceRangeArgs.java | 80 + ...cheduleWeeklyRecurrenceTimeWindowArgs.java | 98 + .../dynatrace/inputs/MaintenanceState.java | 208 + .../inputs/OpsGenieNotificationState.java | 269 + .../inputs/PagerDutyNotificationState.java | 269 + .../inputs/ServiceNowNotificationState.java | 417 ++ .../inputs/SlackNotificationState.java | 269 + .../inputs/TrrelloNotificationState.java | 417 ++ .../inputs/VictorOpsNotificationState.java | 269 + .../WebhookNotificationHeadersArgs.java | 93 + .../WebhookNotificationHeadersHeaderArgs.java | 118 + .../inputs/WebhookNotificationState.java | 381 ++ .../XmattersNotificationHeadersArgs.java | 93 + ...XmattersNotificationHeadersHeaderArgs.java | 118 + .../inputs/XmattersNotificationState.java | 307 ++ .../AutotagEntitySelectorBasedRule.java | 12 + .../outputs/DashboardDashboardMetadata.java | 20 + .../outputs/GetAlertingProfileResult.java | 66 + .../outputs/GetCredentialsResult.java | 72 +- .../dynatrace/outputs/MaintenanceFilter.java | 59 + .../outputs/MaintenanceFilterFilter.java | 91 + .../outputs/MaintenanceGeneralProperties.java | 137 + .../outputs/MaintenanceSchedule.java | 140 + .../MaintenanceScheduleDailyRecurrence.java | 59 + ...cheduleDailyRecurrenceRecurrenceRange.java | 58 + ...anceScheduleDailyRecurrenceTimeWindow.java | 70 + .../MaintenanceScheduleMonthlyRecurrence.java | 72 + ...eduleMonthlyRecurrenceRecurrenceRange.java | 58 + ...ceScheduleMonthlyRecurrenceTimeWindow.java | 70 + .../MaintenanceScheduleOnceRecurrence.java | 70 + .../MaintenanceScheduleWeeklyRecurrence.java | 72 + ...heduleWeeklyRecurrenceRecurrenceRange.java | 58 + ...nceScheduleWeeklyRecurrenceTimeWindow.java | 70 + .../outputs/WebhookNotificationHeaders.java | 58 + .../WebhookNotificationHeadersHeader.java | 80 + .../outputs/XmattersNotificationHeaders.java | 58 + .../XmattersNotificationHeadersHeader.java | 80 + sdk/nodejs/ansibleTowerNotification.ts | 193 + sdk/nodejs/emailNotification.ts | 205 + sdk/nodejs/frequentIssues.ts | 118 + sdk/nodejs/getAlertingProfile.ts | 70 + sdk/nodejs/getCredentials.ts | 94 +- sdk/nodejs/index.ts | 109 + sdk/nodejs/jiraNotification.ts | 233 + sdk/nodejs/maintenance.ts | 131 + sdk/nodejs/opsGenieNotification.ts | 165 + sdk/nodejs/pagerDutyNotification.ts | 165 + sdk/nodejs/serviceNowNotification.ts | 224 + sdk/nodejs/slackNotification.ts | 168 + sdk/nodejs/trrelloNotification.ts | 231 + sdk/nodejs/tsconfig.json | 16 +- sdk/nodejs/types/input.ts | 153 + sdk/nodejs/types/output.ts | 153 + sdk/nodejs/victorOpsNotification.ts | 165 + sdk/nodejs/webhookNotification.ts | 207 + sdk/nodejs/xmattersNotification.ts | 179 + .../lbrlabs_pulumi_dynatrace/__init__.py | 118 + .../lbrlabs_pulumi_dynatrace/_inputs.py | 764 +++ .../ansible_tower_notification.py | 478 ++ .../email_notification.py | 523 ++ .../frequent_issues.py | 240 + .../get_alerting_profile.py | 115 + .../get_credentials.py | 173 +- .../jira_notification.py | 576 +++ .../lbrlabs_pulumi_dynatrace/maintenance.py | 288 ++ .../ops_genie_notification.py | 384 ++ .../lbrlabs_pulumi_dynatrace/outputs.py | 859 ++++ .../pager_duty_notification.py | 384 ++ .../service_now_notification.py | 573 +++ .../slack_notification.py | 385 ++ .../trrello_notification.py | 574 +++ .../victor_ops_notification.py | 384 ++ .../webhook_notification.py | 525 ++ .../xmatters_notification.py | 431 ++ 380 files changed, 42715 insertions(+), 2256 deletions(-) create mode 100644 sdk/dotnet/Dynatrace/AnsibleTowerNotification.cs create mode 100644 sdk/dotnet/Dynatrace/EmailNotification.cs create mode 100644 sdk/dotnet/Dynatrace/FrequentIssues.cs create mode 100644 sdk/dotnet/Dynatrace/GetAlertingProfile.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceFilterArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceFilterFilterArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceFilterFilterGetArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceFilterGetArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceGeneralPropertiesArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceGeneralPropertiesGetArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceGetArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceRecurrenceRangeGetArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceTimeWindowArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceTimeWindowGetArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleGetArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceGetArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeGetArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceTimeWindowGetArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleOnceRecurrenceArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleOnceRecurrenceGetArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceGetArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeGetArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceTimeWindowGetArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/WebhookNotificationHeadersArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/WebhookNotificationHeadersGetArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/WebhookNotificationHeadersHeaderArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/WebhookNotificationHeadersHeaderGetArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/XmattersNotificationHeadersArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/XmattersNotificationHeadersGetArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/XmattersNotificationHeadersHeaderArgs.cs create mode 100644 sdk/dotnet/Dynatrace/Inputs/XmattersNotificationHeadersHeaderGetArgs.cs create mode 100644 sdk/dotnet/Dynatrace/JiraNotification.cs create mode 100644 sdk/dotnet/Dynatrace/Maintenance.cs create mode 100644 sdk/dotnet/Dynatrace/OpsGenieNotification.cs create mode 100644 sdk/dotnet/Dynatrace/Outputs/MaintenanceFilter.cs create mode 100644 sdk/dotnet/Dynatrace/Outputs/MaintenanceFilterFilter.cs create mode 100644 sdk/dotnet/Dynatrace/Outputs/MaintenanceGeneralProperties.cs create mode 100644 sdk/dotnet/Dynatrace/Outputs/MaintenanceSchedule.cs create mode 100644 sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleDailyRecurrence.cs create mode 100644 sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleDailyRecurrenceRecurrenceRange.cs create mode 100644 sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleDailyRecurrenceTimeWindow.cs create mode 100644 sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleMonthlyRecurrence.cs create mode 100644 sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRange.cs create mode 100644 sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleMonthlyRecurrenceTimeWindow.cs create mode 100644 sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleOnceRecurrence.cs create mode 100644 sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleWeeklyRecurrence.cs create mode 100644 sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRange.cs create mode 100644 sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleWeeklyRecurrenceTimeWindow.cs create mode 100644 sdk/dotnet/Dynatrace/Outputs/WebhookNotificationHeaders.cs create mode 100644 sdk/dotnet/Dynatrace/Outputs/WebhookNotificationHeadersHeader.cs create mode 100644 sdk/dotnet/Dynatrace/Outputs/XmattersNotificationHeaders.cs create mode 100644 sdk/dotnet/Dynatrace/Outputs/XmattersNotificationHeadersHeader.cs create mode 100644 sdk/dotnet/Dynatrace/PagerDutyNotification.cs create mode 100644 sdk/dotnet/Dynatrace/ServiceNowNotification.cs create mode 100644 sdk/dotnet/Dynatrace/SlackNotification.cs create mode 100644 sdk/dotnet/Dynatrace/TrrelloNotification.cs create mode 100644 sdk/dotnet/Dynatrace/VictorOpsNotification.cs create mode 100644 sdk/dotnet/Dynatrace/WebhookNotification.cs create mode 100644 sdk/dotnet/Dynatrace/XmattersNotification.cs create mode 100644 sdk/go/dynatrace/ansibleTowerNotification.go create mode 100644 sdk/go/dynatrace/emailNotification.go create mode 100644 sdk/go/dynatrace/frequentIssues.go create mode 100644 sdk/go/dynatrace/getAlertingProfile.go create mode 100644 sdk/go/dynatrace/jiraNotification.go create mode 100644 sdk/go/dynatrace/maintenance.go create mode 100644 sdk/go/dynatrace/opsGenieNotification.go create mode 100644 sdk/go/dynatrace/pagerDutyNotification.go create mode 100644 sdk/go/dynatrace/serviceNowNotification.go create mode 100644 sdk/go/dynatrace/slackNotification.go create mode 100644 sdk/go/dynatrace/trrelloNotification.go create mode 100644 sdk/go/dynatrace/victorOpsNotification.go create mode 100644 sdk/go/dynatrace/webhookNotification.go create mode 100644 sdk/go/dynatrace/xmattersNotification.go create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/AnsibleTowerNotification.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/AnsibleTowerNotificationArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/AnsibleTowerNotificationArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/EmailNotification.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/EmailNotificationArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/EmailNotificationArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/FrequentIssues.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/FrequentIssuesArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/FrequentIssuesArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/JiraNotification.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/JiraNotificationArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/JiraNotificationArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/Maintenance.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/MaintenanceArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/MaintenanceArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/OpsGenieNotification.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/OpsGenieNotificationArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/OpsGenieNotificationArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/PagerDutyNotification.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/PagerDutyNotificationArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/PagerDutyNotificationArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/ServiceNowNotification.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/ServiceNowNotificationArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/ServiceNowNotificationArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/SlackNotification.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/SlackNotificationArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/SlackNotificationArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/TrrelloNotification.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/TrrelloNotificationArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/TrrelloNotificationArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/VictorOpsNotification.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/VictorOpsNotificationArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/VictorOpsNotificationArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/WebhookNotification.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/WebhookNotificationArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/WebhookNotificationArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/XmattersNotification.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/XmattersNotificationArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/XmattersNotificationArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/AnsibleTowerNotificationState$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/AnsibleTowerNotificationState.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/EmailNotificationState$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/EmailNotificationState.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/FrequentIssuesState$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/FrequentIssuesState.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/GetAlertingProfileArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/GetAlertingProfileArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/GetAlertingProfilePlainArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/GetAlertingProfilePlainArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/JiraNotificationState$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/JiraNotificationState.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceFilterArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceFilterArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceFilterFilterArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceFilterFilterArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceGeneralPropertiesArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceGeneralPropertiesArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceTimeWindowArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceTimeWindowArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleOnceRecurrenceArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleOnceRecurrenceArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceState$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceState.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/OpsGenieNotificationState$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/OpsGenieNotificationState.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/PagerDutyNotificationState$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/PagerDutyNotificationState.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/ServiceNowNotificationState$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/ServiceNowNotificationState.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/SlackNotificationState$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/SlackNotificationState.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/TrrelloNotificationState$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/TrrelloNotificationState.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/VictorOpsNotificationState$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/VictorOpsNotificationState.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersHeaderArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersHeaderArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/WebhookNotificationState$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/WebhookNotificationState.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/XmattersNotificationHeadersArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/XmattersNotificationHeadersArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/XmattersNotificationHeadersHeaderArgs$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/XmattersNotificationHeadersHeaderArgs.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/XmattersNotificationState$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/XmattersNotificationState.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/GetAlertingProfileResult$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/GetAlertingProfileResult.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceFilter$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceFilter.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceFilterFilter$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceFilterFilter.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceGeneralProperties$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceGeneralProperties.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceSchedule$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceSchedule.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrence$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrence.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrenceRecurrenceRange$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrenceRecurrenceRange.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrenceTimeWindow$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrenceTimeWindow.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrence$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrence.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRange$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRange.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrenceTimeWindow$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrenceTimeWindow.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleOnceRecurrence$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleOnceRecurrence.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrence$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrence.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRange$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRange.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrenceTimeWindow$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrenceTimeWindow.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/WebhookNotificationHeaders$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/WebhookNotificationHeaders.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/WebhookNotificationHeadersHeader$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/WebhookNotificationHeadersHeader.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/XmattersNotificationHeaders$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/XmattersNotificationHeaders.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/XmattersNotificationHeadersHeader$Builder.class create mode 100644 sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/XmattersNotificationHeadersHeader.class create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/AnsibleTowerNotification.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/AnsibleTowerNotificationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/EmailNotification.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/EmailNotificationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/FrequentIssues.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/FrequentIssuesArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/JiraNotification.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/JiraNotificationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/Maintenance.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/MaintenanceArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/OpsGenieNotification.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/OpsGenieNotificationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/PagerDutyNotification.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/PagerDutyNotificationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/ServiceNowNotification.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/ServiceNowNotificationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/SlackNotification.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/SlackNotificationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/TrrelloNotification.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/TrrelloNotificationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/VictorOpsNotification.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/VictorOpsNotificationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/WebhookNotification.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/WebhookNotificationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/XmattersNotification.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/XmattersNotificationArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/AnsibleTowerNotificationState.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/EmailNotificationState.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/FrequentIssuesState.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/GetAlertingProfileArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/GetAlertingProfilePlainArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/JiraNotificationState.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceFilterArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceFilterFilterArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceGeneralPropertiesArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceTimeWindowArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleOnceRecurrenceArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceState.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/OpsGenieNotificationState.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/PagerDutyNotificationState.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/ServiceNowNotificationState.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/SlackNotificationState.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/TrrelloNotificationState.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/VictorOpsNotificationState.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersHeaderArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/WebhookNotificationState.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/XmattersNotificationHeadersArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/XmattersNotificationHeadersHeaderArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/inputs/XmattersNotificationState.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/GetAlertingProfileResult.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceFilter.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceFilterFilter.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceGeneralProperties.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceSchedule.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrence.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrenceRecurrenceRange.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrenceTimeWindow.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrence.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRange.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrenceTimeWindow.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleOnceRecurrence.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrence.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRange.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrenceTimeWindow.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/WebhookNotificationHeaders.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/WebhookNotificationHeadersHeader.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/XmattersNotificationHeaders.java create mode 100644 sdk/java/src/main/java/com/pulumi/dynatrace/outputs/XmattersNotificationHeadersHeader.java create mode 100644 sdk/nodejs/ansibleTowerNotification.ts create mode 100644 sdk/nodejs/emailNotification.ts create mode 100644 sdk/nodejs/frequentIssues.ts create mode 100644 sdk/nodejs/getAlertingProfile.ts create mode 100644 sdk/nodejs/jiraNotification.ts create mode 100644 sdk/nodejs/maintenance.ts create mode 100644 sdk/nodejs/opsGenieNotification.ts create mode 100644 sdk/nodejs/pagerDutyNotification.ts create mode 100644 sdk/nodejs/serviceNowNotification.ts create mode 100644 sdk/nodejs/slackNotification.ts create mode 100644 sdk/nodejs/trrelloNotification.ts create mode 100644 sdk/nodejs/victorOpsNotification.ts create mode 100644 sdk/nodejs/webhookNotification.ts create mode 100644 sdk/nodejs/xmattersNotification.ts create mode 100644 sdk/python/lbrlabs_pulumi_dynatrace/ansible_tower_notification.py create mode 100644 sdk/python/lbrlabs_pulumi_dynatrace/email_notification.py create mode 100644 sdk/python/lbrlabs_pulumi_dynatrace/frequent_issues.py create mode 100644 sdk/python/lbrlabs_pulumi_dynatrace/get_alerting_profile.py create mode 100644 sdk/python/lbrlabs_pulumi_dynatrace/jira_notification.py create mode 100644 sdk/python/lbrlabs_pulumi_dynatrace/maintenance.py create mode 100644 sdk/python/lbrlabs_pulumi_dynatrace/ops_genie_notification.py create mode 100644 sdk/python/lbrlabs_pulumi_dynatrace/pager_duty_notification.py create mode 100644 sdk/python/lbrlabs_pulumi_dynatrace/service_now_notification.py create mode 100644 sdk/python/lbrlabs_pulumi_dynatrace/slack_notification.py create mode 100644 sdk/python/lbrlabs_pulumi_dynatrace/trrello_notification.py create mode 100644 sdk/python/lbrlabs_pulumi_dynatrace/victor_ops_notification.py create mode 100644 sdk/python/lbrlabs_pulumi_dynatrace/webhook_notification.py create mode 100644 sdk/python/lbrlabs_pulumi_dynatrace/xmatters_notification.py diff --git a/.github/renovate.json b/.github/renovate.json index c33bdb41..903d1c28 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -3,5 +3,5 @@ "extends": [ "config:base" ], - "ignorePaths": ["sdk/**"] + "ignorePaths": ["sdk/**", "examples/**"] } diff --git a/go.work.sum b/go.work.sum index f3af11ba..40cffb21 100644 --- a/go.work.sum +++ b/go.work.sum @@ -354,6 +354,25 @@ github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dtcookie/assert v1.2.0/go.mod h1:06O/8B/CcX9Gmle1625gltKzxtBS6I/ZdCSyszs9nbA= +github.com/dtcookie/dynatrace/api/config/applications/web v1.0.12 h1:uU4sZ7YEqnHbswX4Mp3gdltHJPUNm5B6E4CF3sor71c= +github.com/dtcookie/dynatrace/api/config/applications/web v1.0.12/go.mod h1:X1rCU4k9xYqq1ivwmophkV+nRGigP7vntgd2xWsbIck= +github.com/dtcookie/dynatrace/api/config/autotags v1.0.25 h1:iYn1GQLLNcrUrLAWOnpOYsskuN14Jse9bQZtp0+Y550= +github.com/dtcookie/dynatrace/api/config/autotags v1.0.25/go.mod h1:iFMWXjAckwXYu23X+vdHc4kp1GC/KH23Mj9n63psFIg= +github.com/dtcookie/dynatrace/api/config/dashboards v1.0.18 h1:WQlEF3lNNgOl8oJagRmQMwA/R+yUKYqe/+faVytWwBI= +github.com/dtcookie/dynatrace/api/config/dashboards v1.0.18/go.mod h1:KKLiLNR/rA6fCkb8y4rAaLVhLCx/RiI0Pqp/uz/OIdQ= +github.com/dtcookie/dynatrace/api/config/dashboards/sharing v1.0.2 h1:eNfJMcRGRSukm8r3kG7xBPf4EftK/izU3t4yi2wMEt8= +github.com/dtcookie/dynatrace/api/config/dashboards/sharing v1.0.2/go.mod h1:wuGzQiNYDQH71XejnAFCjpM2/SgW3YyzoTv0biYhnmk= +github.com/dtcookie/dynatrace/api/config/maintenance v1.0.11 h1:xpW09pnJt7dFS6DQqmY9JWV0XdlRy96KGBxqPlBoYBg= +github.com/dtcookie/dynatrace/api/config/maintenance v1.0.11/go.mod h1:+UUOxoL2CjjZNhct79TOBdFFdAutqB5x/cmFp2fJTfo= +github.com/dtcookie/dynatrace/api/config/v2/anomalies/frequentissues v1.0.0 h1:mj33vXU7yhp7VmQovsW/IOBI5dYuNCHyXxwMYZwMynI= +github.com/dtcookie/dynatrace/api/config/v2/anomalies/frequentissues v1.0.0/go.mod h1:FvR5B0I2HrqpohQzwBM0BEAUc0ID7xApJQtLDS5x2g0= +github.com/dtcookie/dynatrace/api/config/v2/maintenance v1.0.0 h1:FdB7mlOpq4IvLL6CjC57rOA9D3vmkNRxkHxa4xTkKeM= +github.com/dtcookie/dynatrace/api/config/v2/maintenance v1.0.0/go.mod h1:X+e6c3B6D/8pIXEpil5yg06j3rpXBEFOdd5EIYxBUyI= +github.com/dtcookie/dynatrace/api/config/v2/notifications v1.0.4 h1:0/EVjzj93Dp6LAsiba4NyF2qZal3RbfwDLNV6vRPVbA= +github.com/dtcookie/dynatrace/api/config/v2/notifications v1.0.4/go.mod h1:N6ft2ZVFZgoK8ATx3OQaC0Oo+2G0M7pGQyeEOUTQP6k= +github.com/dynatrace-oss/terraform-provider-dynatrace v1.14.1 h1:Lq/jVKcXrUcsFVlNM6S5OAd6pQmkdCb1b5uKDmAk8aU= +github.com/dynatrace-oss/terraform-provider-dynatrace v1.14.1/go.mod h1:6c9cYcxPPQAGm7De8rr2xuiNUTSRxfT9B6bVhZQXaC8= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= @@ -484,6 +503,8 @@ github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4er github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-replayers/httpreplay v1.1.1/go.mod h1:gN9GeLIs7l6NUoVaSSnv2RiqK1NiwAmD0MrKeC9IIks= diff --git a/provider/cmd/pulumi-resource-dynatrace/schema.json b/provider/cmd/pulumi-resource-dynatrace/schema.json index 92115caa..3b40f135 100644 --- a/provider/cmd/pulumi-resource-dynatrace/schema.json +++ b/provider/cmd/pulumi-resource-dynatrace/schema.json @@ -1454,6 +1454,14 @@ } } }, + "normalization": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, "selector": { "type": "string", "language": { @@ -11789,6 +11797,15 @@ } } }, + "preset": { + "type": "boolean", + "description": "the dashboard is a preset (`true`) or not (`false`). Default is `false`.\n", + "language": { + "python": { + "mapCase": false + } + } + }, "shared": { "type": "boolean", "description": "the dashboard is shared (`true`) or private (`false`)\n", @@ -18860,6 +18877,478 @@ "label" ] }, + "dynatrace:index/MaintenanceFilter:MaintenanceFilter": { + "properties": { + "filters": { + "type": "array", + "items": { + "$ref": "#/types/dynatrace:index/MaintenanceFilterFilter:MaintenanceFilterFilter" + }, + "description": "A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies\n", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object" + }, + "dynatrace:index/MaintenanceFilterFilter:MaintenanceFilterFilter": { + "properties": { + "entityId": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "entityTags": { + "type": "array", + "items": { + "type": "string" + }, + "language": { + "python": { + "mapCase": false + } + } + }, + "entityType": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "managementZones": { + "type": "array", + "items": { + "type": "string" + }, + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object" + }, + "dynatrace:index/MaintenanceGeneralProperties:MaintenanceGeneralProperties": { + "properties": { + "description": { + "type": "string", + "description": "A short description of the maintenance purpose\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "disableSynthetic": { + "type": "boolean", + "description": "Suppress execution of synthetic monitors during the maintenance\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "name": { + "type": "string", + "description": "The name of the maintenance window, displayed in the UI\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "suppression": { + "type": "string", + "description": "The type of suppression of alerting and problem detection during the maintenance\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "type": { + "type": "string", + "description": "The type of the maintenance: planned or unplanned\n", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "name", + "suppression", + "type" + ] + }, + "dynatrace:index/MaintenanceSchedule:MaintenanceSchedule": { + "properties": { + "dailyRecurrence": { + "$ref": "#/types/dynatrace:index/MaintenanceScheduleDailyRecurrence:MaintenanceScheduleDailyRecurrence", + "description": "The configuration for maintenance windows occuring daily\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "monthlyRecurrence": { + "$ref": "#/types/dynatrace:index/MaintenanceScheduleMonthlyRecurrence:MaintenanceScheduleMonthlyRecurrence", + "description": "The configuration for maintenance windows occuring monthly\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "onceRecurrence": { + "$ref": "#/types/dynatrace:index/MaintenanceScheduleOnceRecurrence:MaintenanceScheduleOnceRecurrence", + "description": "The configuration for maintenance windows occuring once\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "type": { + "type": "string", + "description": "The time window of the maintenance window\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "weeklyRecurrence": { + "$ref": "#/types/dynatrace:index/MaintenanceScheduleWeeklyRecurrence:MaintenanceScheduleWeeklyRecurrence", + "description": "The configuration for maintenance windows occuring weekly\n", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "type" + ] + }, + "dynatrace:index/MaintenanceScheduleDailyRecurrence:MaintenanceScheduleDailyRecurrence": { + "properties": { + "recurrenceRange": { + "$ref": "#/types/dynatrace:index/MaintenanceScheduleDailyRecurrenceRecurrenceRange:MaintenanceScheduleDailyRecurrenceRecurrenceRange", + "language": { + "python": { + "mapCase": false + } + } + }, + "timeWindow": { + "$ref": "#/types/dynatrace:index/MaintenanceScheduleDailyRecurrenceTimeWindow:MaintenanceScheduleDailyRecurrenceTimeWindow", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "recurrenceRange", + "timeWindow" + ] + }, + "dynatrace:index/MaintenanceScheduleDailyRecurrenceRecurrenceRange:MaintenanceScheduleDailyRecurrenceRecurrenceRange": { + "properties": { + "endDate": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "startDate": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "endDate", + "startDate" + ] + }, + "dynatrace:index/MaintenanceScheduleDailyRecurrenceTimeWindow:MaintenanceScheduleDailyRecurrenceTimeWindow": { + "properties": { + "endTime": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "startTime": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "timeZone": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "endTime", + "startTime", + "timeZone" + ] + }, + "dynatrace:index/MaintenanceScheduleMonthlyRecurrence:MaintenanceScheduleMonthlyRecurrence": { + "properties": { + "dayOfMonth": { + "type": "integer", + "language": { + "python": { + "mapCase": false + } + } + }, + "recurrenceRange": { + "$ref": "#/types/dynatrace:index/MaintenanceScheduleMonthlyRecurrenceRecurrenceRange:MaintenanceScheduleMonthlyRecurrenceRecurrenceRange", + "language": { + "python": { + "mapCase": false + } + } + }, + "timeWindow": { + "$ref": "#/types/dynatrace:index/MaintenanceScheduleMonthlyRecurrenceTimeWindow:MaintenanceScheduleMonthlyRecurrenceTimeWindow", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "dayOfMonth", + "recurrenceRange", + "timeWindow" + ] + }, + "dynatrace:index/MaintenanceScheduleMonthlyRecurrenceRecurrenceRange:MaintenanceScheduleMonthlyRecurrenceRecurrenceRange": { + "properties": { + "endDate": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "startDate": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "endDate", + "startDate" + ] + }, + "dynatrace:index/MaintenanceScheduleMonthlyRecurrenceTimeWindow:MaintenanceScheduleMonthlyRecurrenceTimeWindow": { + "properties": { + "endTime": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "startTime": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "timeZone": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "endTime", + "startTime", + "timeZone" + ] + }, + "dynatrace:index/MaintenanceScheduleOnceRecurrence:MaintenanceScheduleOnceRecurrence": { + "properties": { + "endTime": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "startTime": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "timeZone": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "endTime", + "startTime", + "timeZone" + ] + }, + "dynatrace:index/MaintenanceScheduleWeeklyRecurrence:MaintenanceScheduleWeeklyRecurrence": { + "properties": { + "dayOfWeek": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "recurrenceRange": { + "$ref": "#/types/dynatrace:index/MaintenanceScheduleWeeklyRecurrenceRecurrenceRange:MaintenanceScheduleWeeklyRecurrenceRecurrenceRange", + "language": { + "python": { + "mapCase": false + } + } + }, + "timeWindow": { + "$ref": "#/types/dynatrace:index/MaintenanceScheduleWeeklyRecurrenceTimeWindow:MaintenanceScheduleWeeklyRecurrenceTimeWindow", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "dayOfWeek", + "recurrenceRange", + "timeWindow" + ] + }, + "dynatrace:index/MaintenanceScheduleWeeklyRecurrenceRecurrenceRange:MaintenanceScheduleWeeklyRecurrenceRecurrenceRange": { + "properties": { + "endDate": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "startDate": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "endDate", + "startDate" + ] + }, + "dynatrace:index/MaintenanceScheduleWeeklyRecurrenceTimeWindow:MaintenanceScheduleWeeklyRecurrenceTimeWindow": { + "properties": { + "endTime": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "startTime": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "timeZone": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "endTime", + "startTime", + "timeZone" + ] + }, "dynatrace:index/MaintenanceWindowMetadata:MaintenanceWindowMetadata": { "properties": { "clusterVersion": { @@ -37593,6 +38082,114 @@ }, "type": "object" }, + "dynatrace:index/WebhookNotificationHeaders:WebhookNotificationHeaders": { + "properties": { + "headers": { + "type": "array", + "items": { + "$ref": "#/types/dynatrace:index/WebhookNotificationHeadersHeader:WebhookNotificationHeadersHeader" + }, + "description": "An additional HTTP Header to include when sending requests\n", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "headers" + ] + }, + "dynatrace:index/WebhookNotificationHeadersHeader:WebhookNotificationHeadersHeader": { + "properties": { + "name": { + "type": "string", + "description": "The name of the notification configuration\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "secretValue": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + }, + "secret": true + }, + "value": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "name" + ] + }, + "dynatrace:index/XmattersNotificationHeaders:XmattersNotificationHeaders": { + "properties": { + "headers": { + "type": "array", + "items": { + "$ref": "#/types/dynatrace:index/XmattersNotificationHeadersHeader:XmattersNotificationHeadersHeader" + }, + "description": "An additional HTTP Header to include when sending requests\n", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "headers" + ] + }, + "dynatrace:index/XmattersNotificationHeadersHeader:XmattersNotificationHeadersHeader": { + "properties": { + "name": { + "type": "string", + "description": "The name of the notification configuration\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "secretValue": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + }, + "secret": true + }, + "value": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object", + "required": [ + "name" + ] + }, "dynatrace:index/getSyntheticLocationsLocations:getSyntheticLocationsLocations": { "properties": { "locations": { @@ -37923,6 +38520,130 @@ "type": "object" } }, + "dynatrace:index/ansibleTowerNotification:AnsibleTowerNotification": { + "properties": { + "active": { + "type": "boolean", + "description": "The notification is active (`true`) or inactive (`false`). Default is `false`.\n" + }, + "customMessage": { + "type": "string", + "description": "The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "insecure": { + "type": "boolean", + "description": "Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`.\n" + }, + "jobTemplateUrl": { + "type": "string", + "description": "The URL of the target Ansible Tower job template\n" + }, + "name": { + "type": "string", + "description": "The display name within the Dynatrace WebUI.\n" + }, + "password": { + "type": "string", + "description": "The password for the Ansible Tower account\n", + "secret": true + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile.\n" + }, + "username": { + "type": "string", + "description": "The username of the Ansible Tower account\n" + } + }, + "required": [ + "customMessage", + "jobTemplateUrl", + "name", + "profile", + "username" + ], + "inputProperties": { + "active": { + "type": "boolean", + "description": "The notification is active (`true`) or inactive (`false`). Default is `false`.\n" + }, + "customMessage": { + "type": "string", + "description": "The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "insecure": { + "type": "boolean", + "description": "Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`.\n" + }, + "jobTemplateUrl": { + "type": "string", + "description": "The URL of the target Ansible Tower job template\n" + }, + "name": { + "type": "string", + "description": "The display name within the Dynatrace WebUI.\n" + }, + "password": { + "type": "string", + "description": "The password for the Ansible Tower account\n", + "secret": true + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile.\n" + }, + "username": { + "type": "string", + "description": "The username of the Ansible Tower account\n" + } + }, + "requiredInputs": [ + "customMessage", + "jobTemplateUrl", + "profile", + "username" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering AnsibleTowerNotification resources.\n", + "properties": { + "active": { + "type": "boolean", + "description": "The notification is active (`true`) or inactive (`false`). Default is `false`.\n" + }, + "customMessage": { + "type": "string", + "description": "The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "insecure": { + "type": "boolean", + "description": "Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`.\n" + }, + "jobTemplateUrl": { + "type": "string", + "description": "The URL of the target Ansible Tower job template\n" + }, + "name": { + "type": "string", + "description": "The display name within the Dynatrace WebUI.\n" + }, + "password": { + "type": "string", + "description": "The password for the Ansible Tower account\n", + "secret": true + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile.\n" + }, + "username": { + "type": "string", + "description": "The username of the Ansible Tower account\n" + } + }, + "type": "object" + } + }, "dynatrace:index/applicationAnomalies:ApplicationAnomalies": { "properties": { "failureRate": { @@ -39748,6 +40469,166 @@ "type": "object" } }, + "dynatrace:index/emailNotification:EmailNotification": { + "properties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "bccs": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of the email BCC-recipients\n" + }, + "body": { + "type": "string", + "description": "The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "ccs": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of the email CC-recipients\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "notifyClosedProblems": { + "type": "boolean", + "description": "Send email if problem is closed\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "subject": { + "type": "string", + "description": "The subject of the email notifications\n" + }, + "tos": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of the email recipients\n" + } + }, + "required": [ + "body", + "name", + "profile", + "subject", + "tos" + ], + "inputProperties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "bccs": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of the email BCC-recipients\n" + }, + "body": { + "type": "string", + "description": "The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "ccs": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of the email CC-recipients\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "notifyClosedProblems": { + "type": "boolean", + "description": "Send email if problem is closed\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "subject": { + "type": "string", + "description": "The subject of the email notifications\n" + }, + "tos": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of the email recipients\n" + } + }, + "requiredInputs": [ + "body", + "profile", + "subject", + "tos" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering EmailNotification resources.\n", + "properties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "bccs": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of the email BCC-recipients\n" + }, + "body": { + "type": "string", + "description": "The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "ccs": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of the email CC-recipients\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "notifyClosedProblems": { + "type": "boolean", + "description": "Send email if problem is closed\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "subject": { + "type": "string", + "description": "The subject of the email notifications\n" + }, + "tos": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of the email recipients\n" + } + }, + "type": "object" + } + }, "dynatrace:index/environment:Environment": { "description": "## Dynatrace Documentation\n\n- Manage your monitoring environments - https://www.dynatrace.com/support/help/setup-and-configuration/dynatrace-managed/operation/manage-your-monitoring-environments\n\n- Cluster API v2 - Environments - https://www.dynatrace.com/support/help/shortlink/cluster-api#environments\n", "properties": { @@ -39851,6 +40732,64 @@ "type": "object" } }, + "dynatrace:index/frequentIssues:FrequentIssues": { + "properties": { + "detectApps": { + "type": "boolean", + "description": "Detect frequent issues within applications, enabled (`true`) or disabled (`false`)\n" + }, + "detectInfra": { + "type": "boolean", + "description": "Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`)\n" + }, + "detectTxn": { + "type": "boolean", + "description": "Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`)\n" + } + }, + "required": [ + "detectApps", + "detectInfra", + "detectTxn" + ], + "inputProperties": { + "detectApps": { + "type": "boolean", + "description": "Detect frequent issues within applications, enabled (`true`) or disabled (`false`)\n" + }, + "detectInfra": { + "type": "boolean", + "description": "Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`)\n" + }, + "detectTxn": { + "type": "boolean", + "description": "Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`)\n" + } + }, + "requiredInputs": [ + "detectApps", + "detectInfra", + "detectTxn" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering FrequentIssues resources.\n", + "properties": { + "detectApps": { + "type": "boolean", + "description": "Detect frequent issues within applications, enabled (`true`) or disabled (`false`)\n" + }, + "detectInfra": { + "type": "boolean", + "description": "Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`)\n" + }, + "detectTxn": { + "type": "boolean", + "description": "Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`)\n" + } + }, + "type": "object" + } + }, "dynatrace:index/hostAnomalies:HostAnomalies": { "properties": { "connections": { @@ -40374,6 +41313,162 @@ "type": "object" } }, + "dynatrace:index/jiraNotification:JiraNotification": { + "properties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "apiToken": { + "type": "string", + "description": "The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/)\n", + "secret": true + }, + "description": { + "type": "string", + "description": "The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary\n" + }, + "issueType": { + "type": "string", + "description": "The type of the Jira issue to be created by this notification\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "projectKey": { + "type": "string", + "description": "The project key of the Jira issue to be created by this notification\n" + }, + "summary": { + "type": "string", + "description": "The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "url": { + "type": "string", + "description": "The URL of the Jira API endpoint\n" + }, + "username": { + "type": "string", + "description": "The username of the Jira profile\n" + } + }, + "required": [ + "active", + "description", + "issueType", + "name", + "profile", + "projectKey", + "summary", + "url", + "username" + ], + "inputProperties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "apiToken": { + "type": "string", + "description": "The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/)\n", + "secret": true + }, + "description": { + "type": "string", + "description": "The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary\n" + }, + "issueType": { + "type": "string", + "description": "The type of the Jira issue to be created by this notification\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "projectKey": { + "type": "string", + "description": "The project key of the Jira issue to be created by this notification\n" + }, + "summary": { + "type": "string", + "description": "The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "url": { + "type": "string", + "description": "The URL of the Jira API endpoint\n" + }, + "username": { + "type": "string", + "description": "The username of the Jira profile\n" + } + }, + "requiredInputs": [ + "active", + "description", + "issueType", + "profile", + "projectKey", + "summary", + "url", + "username" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering JiraNotification resources.\n", + "properties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "apiToken": { + "type": "string", + "description": "The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/)\n", + "secret": true + }, + "description": { + "type": "string", + "description": "The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary\n" + }, + "issueType": { + "type": "string", + "description": "The type of the Jira issue to be created by this notification\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "projectKey": { + "type": "string", + "description": "The project key of the Jira issue to be created by this notification\n" + }, + "summary": { + "type": "string", + "description": "The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "url": { + "type": "string", + "description": "The URL of the Jira API endpoint\n" + }, + "username": { + "type": "string", + "description": "The username of the Jira profile\n" + } + }, + "type": "object" + } + }, "dynatrace:index/k8sCredentials:K8sCredentials": { "properties": { "active": { @@ -40608,6 +41703,83 @@ "type": "object" } }, + "dynatrace:index/maintenance:Maintenance": { + "properties": { + "enabled": { + "type": "boolean", + "description": "The maintenance window is enabled or disabled\n" + }, + "filters": { + "type": "array", + "items": { + "$ref": "#/types/dynatrace:index/MaintenanceFilter:MaintenanceFilter" + }, + "description": "The filters of the maintenance window\n" + }, + "generalProperties": { + "$ref": "#/types/dynatrace:index/MaintenanceGeneralProperties:MaintenanceGeneralProperties", + "description": "The general properties of the maintenance window\n" + }, + "schedule": { + "$ref": "#/types/dynatrace:index/MaintenanceSchedule:MaintenanceSchedule", + "description": "The schedule of the maintenance window\n" + } + }, + "required": [ + "generalProperties", + "schedule" + ], + "inputProperties": { + "enabled": { + "type": "boolean", + "description": "The maintenance window is enabled or disabled\n" + }, + "filters": { + "type": "array", + "items": { + "$ref": "#/types/dynatrace:index/MaintenanceFilter:MaintenanceFilter" + }, + "description": "The filters of the maintenance window\n" + }, + "generalProperties": { + "$ref": "#/types/dynatrace:index/MaintenanceGeneralProperties:MaintenanceGeneralProperties", + "description": "The general properties of the maintenance window\n" + }, + "schedule": { + "$ref": "#/types/dynatrace:index/MaintenanceSchedule:MaintenanceSchedule", + "description": "The schedule of the maintenance window\n" + } + }, + "requiredInputs": [ + "generalProperties", + "schedule" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering Maintenance resources.\n", + "properties": { + "enabled": { + "type": "boolean", + "description": "The maintenance window is enabled or disabled\n" + }, + "filters": { + "type": "array", + "items": { + "$ref": "#/types/dynatrace:index/MaintenanceFilter:MaintenanceFilter" + }, + "description": "The filters of the maintenance window\n" + }, + "generalProperties": { + "$ref": "#/types/dynatrace:index/MaintenanceGeneralProperties:MaintenanceGeneralProperties", + "description": "The general properties of the maintenance window\n" + }, + "schedule": { + "$ref": "#/types/dynatrace:index/MaintenanceSchedule:MaintenanceSchedule", + "description": "The schedule of the maintenance window\n" + } + }, + "type": "object" + } + }, "dynatrace:index/maintenanceWindow:MaintenanceWindow": { "properties": { "description": { @@ -41235,6 +42407,206 @@ "type": "object" } }, + "dynatrace:index/opsGenieNotification:OpsGenieNotification": { + "properties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "apiKey": { + "type": "string", + "description": "The API key to access OpsGenie\n", + "secret": true + }, + "domain": { + "type": "string", + "description": "The region domain of the OpsGenie\n" + }, + "message": { + "type": "string", + "description": "The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + } + }, + "required": [ + "active", + "domain", + "message", + "name", + "profile" + ], + "inputProperties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "apiKey": { + "type": "string", + "description": "The API key to access OpsGenie\n", + "secret": true + }, + "domain": { + "type": "string", + "description": "The region domain of the OpsGenie\n" + }, + "message": { + "type": "string", + "description": "The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + } + }, + "requiredInputs": [ + "active", + "domain", + "message", + "profile" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering OpsGenieNotification resources.\n", + "properties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "apiKey": { + "type": "string", + "description": "The API key to access OpsGenie\n", + "secret": true + }, + "domain": { + "type": "string", + "description": "The region domain of the OpsGenie\n" + }, + "message": { + "type": "string", + "description": "The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + } + }, + "type": "object" + } + }, + "dynatrace:index/pagerDutyNotification:PagerDutyNotification": { + "properties": { + "account": { + "type": "string", + "description": "The name of the PagerDuty account\n" + }, + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "apiKey": { + "type": "string", + "description": "The API key to access PagerDuty\n", + "secret": true + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "service": { + "type": "string", + "description": "The name of the PagerDuty Service\n" + } + }, + "required": [ + "account", + "active", + "name", + "profile", + "service" + ], + "inputProperties": { + "account": { + "type": "string", + "description": "The name of the PagerDuty account\n" + }, + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "apiKey": { + "type": "string", + "description": "The API key to access PagerDuty\n", + "secret": true + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "service": { + "type": "string", + "description": "The name of the PagerDuty Service\n" + } + }, + "requiredInputs": [ + "account", + "active", + "profile", + "service" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering PagerDutyNotification resources.\n", + "properties": { + "account": { + "type": "string", + "description": "The name of the PagerDuty account\n" + }, + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "apiKey": { + "type": "string", + "description": "The API key to access PagerDuty\n", + "secret": true + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "service": { + "type": "string", + "description": "The name of the PagerDuty Service\n" + } + }, + "type": "object" + } + }, "dynatrace:index/processgroupNaming:ProcessgroupNaming": { "properties": { "conditions": { @@ -41990,6 +43362,258 @@ "type": "object" } }, + "dynatrace:index/serviceNowNotification:ServiceNowNotification": { + "properties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "events": { + "type": "boolean", + "description": "Send events into ServiceNow ITOM\n" + }, + "incidents": { + "type": "boolean", + "description": "Send incidents into ServiceNow ITSM\n" + }, + "instance": { + "type": "string", + "description": "The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them\n" + }, + "message": { + "type": "string", + "description": "The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "password": { + "type": "string", + "description": "The password to the ServiceNow account\n", + "secret": true + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "url": { + "type": "string", + "description": "The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them\n" + }, + "username": { + "type": "string", + "description": "The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles\n" + } + }, + "required": [ + "active", + "incidents", + "message", + "name", + "profile", + "username" + ], + "inputProperties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "events": { + "type": "boolean", + "description": "Send events into ServiceNow ITOM\n" + }, + "incidents": { + "type": "boolean", + "description": "Send incidents into ServiceNow ITSM\n" + }, + "instance": { + "type": "string", + "description": "The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them\n" + }, + "message": { + "type": "string", + "description": "The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "password": { + "type": "string", + "description": "The password to the ServiceNow account\n", + "secret": true + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "url": { + "type": "string", + "description": "The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them\n" + }, + "username": { + "type": "string", + "description": "The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles\n" + } + }, + "requiredInputs": [ + "active", + "incidents", + "message", + "profile", + "username" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering ServiceNowNotification resources.\n", + "properties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "events": { + "type": "boolean", + "description": "Send events into ServiceNow ITOM\n" + }, + "incidents": { + "type": "boolean", + "description": "Send incidents into ServiceNow ITSM\n" + }, + "instance": { + "type": "string", + "description": "The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them\n" + }, + "message": { + "type": "string", + "description": "The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "password": { + "type": "string", + "description": "The password to the ServiceNow account\n", + "secret": true + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "url": { + "type": "string", + "description": "The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them\n" + }, + "username": { + "type": "string", + "description": "The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles\n" + } + }, + "type": "object" + } + }, + "dynatrace:index/slackNotification:SlackNotification": { + "properties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "channel": { + "type": "string", + "description": "The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to\n" + }, + "message": { + "type": "string", + "description": "The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "url": { + "type": "string", + "description": "The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests\n", + "secret": true + } + }, + "required": [ + "active", + "channel", + "message", + "name", + "profile", + "url" + ], + "inputProperties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "channel": { + "type": "string", + "description": "The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to\n" + }, + "message": { + "type": "string", + "description": "The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "url": { + "type": "string", + "description": "The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests\n", + "secret": true + } + }, + "requiredInputs": [ + "active", + "channel", + "message", + "profile", + "url" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering SlackNotification resources.\n", + "properties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "channel": { + "type": "string", + "description": "The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to\n" + }, + "message": { + "type": "string", + "description": "The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "url": { + "type": "string", + "description": "The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests\n", + "secret": true + } + }, + "type": "object" + } + }, "dynatrace:index/slo:Slo": { "properties": { "denominator": { @@ -42363,6 +43987,159 @@ "type": "object" } }, + "dynatrace:index/trrelloNotification:TrrelloNotification": { + "properties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "applicationKey": { + "type": "string", + "description": "The application key for the Trello account\n" + }, + "authorizationToken": { + "type": "string", + "description": "The application token for the Trello account\n" + }, + "boardId": { + "type": "string", + "description": "The Trello board to which the card should be assigned\n" + }, + "description": { + "type": "string", + "description": "The description of the Trello card. You can use same placeholders as in card text\n" + }, + "listId": { + "type": "string", + "description": "The Trello list to which the card should be assigned\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "resolvedListId": { + "type": "string", + "description": "The Trello list to which the card of the resolved problem should be assigned\n" + }, + "text": { + "type": "string", + "description": "The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + } + }, + "required": [ + "active", + "applicationKey", + "boardId", + "description", + "listId", + "name", + "profile", + "resolvedListId", + "text" + ], + "inputProperties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "applicationKey": { + "type": "string", + "description": "The application key for the Trello account\n" + }, + "authorizationToken": { + "type": "string", + "description": "The application token for the Trello account\n" + }, + "boardId": { + "type": "string", + "description": "The Trello board to which the card should be assigned\n" + }, + "description": { + "type": "string", + "description": "The description of the Trello card. You can use same placeholders as in card text\n" + }, + "listId": { + "type": "string", + "description": "The Trello list to which the card should be assigned\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "resolvedListId": { + "type": "string", + "description": "The Trello list to which the card of the resolved problem should be assigned\n" + }, + "text": { + "type": "string", + "description": "The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + } + }, + "requiredInputs": [ + "active", + "applicationKey", + "boardId", + "description", + "listId", + "profile", + "resolvedListId", + "text" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering TrrelloNotification resources.\n", + "properties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "applicationKey": { + "type": "string", + "description": "The application key for the Trello account\n" + }, + "authorizationToken": { + "type": "string", + "description": "The application token for the Trello account\n" + }, + "boardId": { + "type": "string", + "description": "The Trello board to which the card should be assigned\n" + }, + "description": { + "type": "string", + "description": "The description of the Trello card. You can use same placeholders as in card text\n" + }, + "listId": { + "type": "string", + "description": "The Trello list to which the card should be assigned\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "resolvedListId": { + "type": "string", + "description": "The Trello list to which the card of the resolved problem should be assigned\n" + }, + "text": { + "type": "string", + "description": "The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + } + }, + "type": "object" + } + }, "dynatrace:index/user:User": { "description": "## Dynatrace Documentation\n\n- User management and SSO - https://www.dynatrace.com/support/help/how-to-use-dynatrace/user-management-and-sso\n\n- User management API - https://www.dynatrace.com/support/help/dynatrace-api/account-management-api/user-management-api\n", "properties": { @@ -42575,6 +44352,106 @@ "type": "object" } }, + "dynatrace:index/victorOpsNotification:VictorOpsNotification": { + "properties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "apiKey": { + "type": "string", + "description": "The API key for the target VictorOps account\n", + "secret": true + }, + "message": { + "type": "string", + "description": "The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "routingKey": { + "type": "string", + "description": "The routing key, defining the group to be notified\n" + } + }, + "required": [ + "active", + "message", + "name", + "profile", + "routingKey" + ], + "inputProperties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "apiKey": { + "type": "string", + "description": "The API key for the target VictorOps account\n", + "secret": true + }, + "message": { + "type": "string", + "description": "The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "routingKey": { + "type": "string", + "description": "The routing key, defining the group to be notified\n" + } + }, + "requiredInputs": [ + "active", + "message", + "profile", + "routingKey" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering VictorOpsNotification resources.\n", + "properties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "apiKey": { + "type": "string", + "description": "The API key for the target VictorOps account\n", + "secret": true + }, + "message": { + "type": "string", + "description": "The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "routingKey": { + "type": "string", + "description": "The routing key, defining the group to be notified\n" + } + }, + "type": "object" + } + }, "dynatrace:index/webApplication:WebApplication": { "properties": { "conversionGoals": { @@ -42846,9 +44723,283 @@ }, "type": "object" } + }, + "dynatrace:index/webhookNotification:WebhookNotification": { + "properties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "headers": { + "$ref": "#/types/dynatrace:index/WebhookNotificationHeaders:WebhookNotificationHeaders", + "description": "A list of the additional HTTP headers\n" + }, + "insecure": { + "type": "boolean", + "description": "Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "notifyClosedProblems": { + "type": "boolean", + "description": "Send email if problem is closed\n" + }, + "notifyEventMerges": { + "type": "boolean", + "description": "Call webhook if new events merge into existing problems\n" + }, + "payload": { + "type": "string", + "description": "The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "url": { + "type": "string", + "description": "The URL of the WebHook endpoint\n" + } + }, + "required": [ + "active", + "name", + "payload", + "profile", + "url" + ], + "inputProperties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "headers": { + "$ref": "#/types/dynatrace:index/WebhookNotificationHeaders:WebhookNotificationHeaders", + "description": "A list of the additional HTTP headers\n" + }, + "insecure": { + "type": "boolean", + "description": "Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "notifyClosedProblems": { + "type": "boolean", + "description": "Send email if problem is closed\n" + }, + "notifyEventMerges": { + "type": "boolean", + "description": "Call webhook if new events merge into existing problems\n" + }, + "payload": { + "type": "string", + "description": "The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "url": { + "type": "string", + "description": "The URL of the WebHook endpoint\n" + } + }, + "requiredInputs": [ + "active", + "payload", + "profile", + "url" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering WebhookNotification resources.\n", + "properties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "headers": { + "$ref": "#/types/dynatrace:index/WebhookNotificationHeaders:WebhookNotificationHeaders", + "description": "A list of the additional HTTP headers\n" + }, + "insecure": { + "type": "boolean", + "description": "Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "notifyClosedProblems": { + "type": "boolean", + "description": "Send email if problem is closed\n" + }, + "notifyEventMerges": { + "type": "boolean", + "description": "Call webhook if new events merge into existing problems\n" + }, + "payload": { + "type": "string", + "description": "The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "url": { + "type": "string", + "description": "The URL of the WebHook endpoint\n" + } + }, + "type": "object" + } + }, + "dynatrace:index/xmattersNotification:XmattersNotification": { + "properties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "headers": { + "$ref": "#/types/dynatrace:index/XmattersNotificationHeaders:XmattersNotificationHeaders", + "description": "A list of the additional HTTP headers\n" + }, + "insecure": { + "type": "boolean", + "description": "Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "payload": { + "type": "string", + "description": "The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "url": { + "type": "string", + "description": "The URL of the WebHook endpoint\n" + } + }, + "required": [ + "active", + "name", + "payload", + "profile", + "url" + ], + "inputProperties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "headers": { + "$ref": "#/types/dynatrace:index/XmattersNotificationHeaders:XmattersNotificationHeaders", + "description": "A list of the additional HTTP headers\n" + }, + "insecure": { + "type": "boolean", + "description": "Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "payload": { + "type": "string", + "description": "The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "url": { + "type": "string", + "description": "The URL of the WebHook endpoint\n" + } + }, + "requiredInputs": [ + "active", + "payload", + "profile", + "url" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering XmattersNotification resources.\n", + "properties": { + "active": { + "type": "boolean", + "description": "The configuration is enabled (`true`) or disabled (`false`)\n" + }, + "headers": { + "$ref": "#/types/dynatrace:index/XmattersNotificationHeaders:XmattersNotificationHeaders", + "description": "A list of the additional HTTP headers\n" + }, + "insecure": { + "type": "boolean", + "description": "Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates\n" + }, + "name": { + "type": "string", + "description": "The name of the notification configuration\n" + }, + "payload": { + "type": "string", + "description": "The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas\n" + }, + "profile": { + "type": "string", + "description": "The ID of the associated alerting profile\n" + }, + "url": { + "type": "string", + "description": "The URL of the WebHook endpoint\n" + } + }, + "type": "object" + } } }, "functions": { + "dynatrace:index/getAlertingProfile:getAlertingProfile": { + "description": "The Alerting Profile queries for an Alerting Profile that has a specified name. In case multiple Alerting Profiles share the same name the first one found will be used.\nThe ID of this Data Resource aligns with the IDs used by the Dynatrace Settings 2.0 API.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as dynatrace from \"@lbrlabs/pulumi-dynatrace\";\nimport * as dynatrace from \"@pulumi/dynatrace\";\n\nconst default = dynatrace.getAlertingProfile({\n name: \"Default\",\n});\nconst myWebhookNotification = new dynatrace.WebhookNotification(\"myWebhookNotification\", {\n active: false,\n profile: _default.then(_default =\u003e _default.id),\n url: \"https://webhook.site/40bf4d43-1a50-4ebd-913d-bf50ce7c3a1e\",\n insecure: true,\n notifyEventMerges: true,\n notifyClosedProblems: true,\n payload: \"web-hook-payload\",\n});\n```\n```python\nimport pulumi\nimport lbrlabs_pulumi_dynatrace as dynatrace\nimport pulumi_dynatrace as dynatrace\n\ndefault = dynatrace.get_alerting_profile(name=\"Default\")\nmy_webhook_notification = dynatrace.WebhookNotification(\"myWebhookNotification\",\n active=False,\n profile=default.id,\n url=\"https://webhook.site/40bf4d43-1a50-4ebd-913d-bf50ce7c3a1e\",\n insecure=True,\n notify_event_merges=True,\n notify_closed_problems=True,\n payload=\"web-hook-payload\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Dynatrace = Lbrlabs.PulumiPackage.Dynatrace;\nusing Dynatrace = Pulumi.Dynatrace;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Dynatrace.GetAlertingProfile.Invoke(new()\n {\n Name = \"Default\",\n });\n\n var myWebhookNotification = new Dynatrace.WebhookNotification(\"myWebhookNotification\", new()\n {\n Active = false,\n Profile = @default.Apply(getAlertingProfileResult =\u003e getAlertingProfileResult).Apply(@default =\u003e @default.Apply(getAlertingProfileResult =\u003e getAlertingProfileResult.Id)),\n Url = \"https://webhook.site/40bf4d43-1a50-4ebd-913d-bf50ce7c3a1e\",\n Insecure = true,\n NotifyEventMerges = true,\n NotifyClosedProblems = true,\n Payload = \"web-hook-payload\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-dynatrace/sdk/go/dynatrace\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := dynatrace.LookupAlertingProfile(ctx, \u0026GetAlertingProfileArgs{\n\t\t\tName: \"Default\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dynatrace.NewWebhookNotification(ctx, \"myWebhookNotification\", \u0026dynatrace.WebhookNotificationArgs{\n\t\t\tActive: pulumi.Bool(false),\n\t\t\tProfile: pulumi.String(_default.Id),\n\t\t\tUrl: pulumi.String(\"https://webhook.site/40bf4d43-1a50-4ebd-913d-bf50ce7c3a1e\"),\n\t\t\tInsecure: pulumi.Bool(true),\n\t\t\tNotifyEventMerges: pulumi.Bool(true),\n\t\t\tNotifyClosedProblems: pulumi.Bool(true),\n\t\t\tPayload: pulumi.String(\"web-hook-payload\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.dynatrace.DynatraceFunctions;\nimport com.pulumi.dynatrace.inputs.GetAlertingProfileArgs;\nimport com.pulumi.dynatrace.WebhookNotification;\nimport com.pulumi.dynatrace.WebhookNotificationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = DynatraceFunctions.getAlertingProfile(GetAlertingProfileArgs.builder()\n .name(\"Default\")\n .build());\n\n var myWebhookNotification = new WebhookNotification(\"myWebhookNotification\", WebhookNotificationArgs.builder() \n .active(false)\n .profile(default_.id())\n .url(\"https://webhook.site/40bf4d43-1a50-4ebd-913d-bf50ce7c3a1e\")\n .insecure(true)\n .notifyEventMerges(true)\n .notifyClosedProblems(true)\n .payload(\"web-hook-payload\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myWebhookNotification:\n type: dynatrace:WebhookNotification\n properties:\n active: false\n profile: ${default.id}\n url: https://webhook.site/40bf4d43-1a50-4ebd-913d-bf50ce7c3a1e\n insecure: true\n notifyEventMerges: true\n notifyClosedProblems: true\n payload: web-hook-payload\nvariables:\n default:\n fn::invoke:\n Function: dynatrace:getAlertingProfile\n Arguments:\n name: Default\n```\n{{% /example %}}\n{{% /examples %}}", + "inputs": { + "description": "A collection of arguments for invoking getAlertingProfile.\n", + "properties": { + "name": { + "type": "string" + } + }, + "type": "object", + "required": [ + "name" + ] + }, + "outputs": { + "description": "A collection of values returned by getAlertingProfile.\n", + "properties": { + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "name": { + "type": "string" + } + }, + "type": "object", + "required": [ + "name", + "id" + ] + } + }, "dynatrace:index/getAlertingProfiles:getAlertingProfiles": { "description": "The alerting profiles data source allows retrieval of all alerting profiles.\n", "inputs": { @@ -42946,15 +45097,21 @@ } }, "dynatrace:index/getCredentials:getCredentials": { - "description": "The credentials data source allows retrieval of all credentials.\n", + "description": "The `dynatrace.getCredentials` data source queries for Credentials stored within the Credentials Vault using the properties `name`, `scope` and `type`. At least one of `name`, `scope` or `type` needs to be specified as a non empty value. Combinations of the three properties are also possible.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as dynatrace from \"@lbrlabs/pulumi-dynatrace\";\nimport * as dynatrace from \"@pulumi/dynatrace\";\n\nconst creds = dynatrace.getCredentials({\n name: \"Office365 Access Token\",\n});\nconst _name_ = new dynatrace.HttpMonitor(\"#name#\", {\n enabled: true,\n frequency: 60,\n locations: [\"SYNTHETIC_LOCATION-781752216580B1BC\"],\n anomalyDetections: [{\n loadingTimeThresholds: [{\n enabled: true,\n }],\n outageHandlings: [{\n globalOutage: true,\n localOutage: false,\n retryOnError: false,\n }],\n }],\n script: {\n requests: [{\n description: \"google.com\",\n method: \"GET\",\n url: \"https://www.google.com\",\n authentication: {\n type: \"BASIC_AUTHENTICATION\",\n credentials: creds.then(creds =\u003e creds.id),\n },\n configuration: {\n acceptAnyCertificate: true,\n followRedirects: true,\n },\n validation: {\n rules: [{\n type: \"httpStatusesList\",\n passIfFound: false,\n value: \"\u003e=400\",\n }],\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport lbrlabs_pulumi_dynatrace as dynatrace\nimport pulumi_dynatrace as dynatrace\n\ncreds = dynatrace.get_credentials(name=\"Office365 Access Token\")\n_name_ = dynatrace.HttpMonitor(\"#name#\",\n enabled=True,\n frequency=60,\n locations=[\"SYNTHETIC_LOCATION-781752216580B1BC\"],\n anomaly_detections=[dynatrace.HttpMonitorAnomalyDetectionArgs(\n loading_time_thresholds=[dynatrace.HttpMonitorAnomalyDetectionLoadingTimeThresholdArgs(\n enabled=True,\n )],\n outage_handlings=[dynatrace.HttpMonitorAnomalyDetectionOutageHandlingArgs(\n global_outage=True,\n local_outage=False,\n retry_on_error=False,\n )],\n )],\n script=dynatrace.HttpMonitorScriptArgs(\n requests=[dynatrace.HttpMonitorScriptRequestArgs(\n description=\"google.com\",\n method=\"GET\",\n url=\"https://www.google.com\",\n authentication=dynatrace.HttpMonitorScriptRequestAuthenticationArgs(\n type=\"BASIC_AUTHENTICATION\",\n credentials=creds.id,\n ),\n configuration=dynatrace.HttpMonitorScriptRequestConfigurationArgs(\n accept_any_certificate=True,\n follow_redirects=True,\n ),\n validation=dynatrace.HttpMonitorScriptRequestValidationArgs(\n rules=[dynatrace.HttpMonitorScriptRequestValidationRuleArgs(\n type=\"httpStatusesList\",\n pass_if_found=False,\n value=\"\u003e=400\",\n )],\n ),\n )],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Dynatrace = Lbrlabs.PulumiPackage.Dynatrace;\nusing Dynatrace = Pulumi.Dynatrace;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var creds = Dynatrace.GetCredentials.Invoke(new()\n {\n Name = \"Office365 Access Token\",\n });\n\n var _name_ = new Dynatrace.HttpMonitor(\"#name#\", new()\n {\n Enabled = true,\n Frequency = 60,\n Locations = new[]\n {\n \"SYNTHETIC_LOCATION-781752216580B1BC\",\n },\n AnomalyDetections = new[]\n {\n new Dynatrace.Inputs.HttpMonitorAnomalyDetectionArgs\n {\n LoadingTimeThresholds = new[]\n {\n new Dynatrace.Inputs.HttpMonitorAnomalyDetectionLoadingTimeThresholdArgs\n {\n Enabled = true,\n },\n },\n OutageHandlings = new[]\n {\n new Dynatrace.Inputs.HttpMonitorAnomalyDetectionOutageHandlingArgs\n {\n GlobalOutage = true,\n LocalOutage = false,\n RetryOnError = false,\n },\n },\n },\n },\n Script = new Dynatrace.Inputs.HttpMonitorScriptArgs\n {\n Requests = new[]\n {\n new Dynatrace.Inputs.HttpMonitorScriptRequestArgs\n {\n Description = \"google.com\",\n Method = \"GET\",\n Url = \"https://www.google.com\",\n Authentication = new Dynatrace.Inputs.HttpMonitorScriptRequestAuthenticationArgs\n {\n Type = \"BASIC_AUTHENTICATION\",\n Credentials = creds.Apply(getCredentialsResult =\u003e getCredentialsResult.Id),\n },\n Configuration = new Dynatrace.Inputs.HttpMonitorScriptRequestConfigurationArgs\n {\n AcceptAnyCertificate = true,\n FollowRedirects = true,\n },\n Validation = new Dynatrace.Inputs.HttpMonitorScriptRequestValidationArgs\n {\n Rules = new[]\n {\n new Dynatrace.Inputs.HttpMonitorScriptRequestValidationRuleArgs\n {\n Type = \"httpStatusesList\",\n PassIfFound = false,\n Value = \"\u003e=400\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-dynatrace/sdk/go/dynatrace\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcreds, err := dynatrace.GetCredentials(ctx, \u0026GetCredentialsArgs{\n\t\t\tName: pulumi.StringRef(\"Office365 Access Token\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dynatrace.NewHttpMonitor(ctx, \"#name#\", \u0026dynatrace.HttpMonitorArgs{\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tFrequency: pulumi.Int(60),\n\t\t\tLocations: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"SYNTHETIC_LOCATION-781752216580B1BC\"),\n\t\t\t},\n\t\t\tAnomalyDetections: HttpMonitorAnomalyDetectionArray{\n\t\t\t\t\u0026HttpMonitorAnomalyDetectionArgs{\n\t\t\t\t\tLoadingTimeThresholds: HttpMonitorAnomalyDetectionLoadingTimeThresholdArray{\n\t\t\t\t\t\t\u0026HttpMonitorAnomalyDetectionLoadingTimeThresholdArgs{\n\t\t\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tOutageHandlings: HttpMonitorAnomalyDetectionOutageHandlingArray{\n\t\t\t\t\t\t\u0026HttpMonitorAnomalyDetectionOutageHandlingArgs{\n\t\t\t\t\t\t\tGlobalOutage: pulumi.Bool(true),\n\t\t\t\t\t\t\tLocalOutage: pulumi.Bool(false),\n\t\t\t\t\t\t\tRetryOnError: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tScript: \u0026HttpMonitorScriptArgs{\n\t\t\t\tRequests: HttpMonitorScriptRequestArray{\n\t\t\t\t\t\u0026HttpMonitorScriptRequestArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"google.com\"),\n\t\t\t\t\t\tMethod: pulumi.String(\"GET\"),\n\t\t\t\t\t\tUrl: pulumi.String(\"https://www.google.com\"),\n\t\t\t\t\t\tAuthentication: \u0026HttpMonitorScriptRequestAuthenticationArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"BASIC_AUTHENTICATION\"),\n\t\t\t\t\t\t\tCredentials: pulumi.String(creds.Id),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConfiguration: \u0026HttpMonitorScriptRequestConfigurationArgs{\n\t\t\t\t\t\t\tAcceptAnyCertificate: pulumi.Bool(true),\n\t\t\t\t\t\t\tFollowRedirects: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tValidation: \u0026HttpMonitorScriptRequestValidationArgs{\n\t\t\t\t\t\t\tRules: HttpMonitorScriptRequestValidationRuleArray{\n\t\t\t\t\t\t\t\t\u0026HttpMonitorScriptRequestValidationRuleArgs{\n\t\t\t\t\t\t\t\t\tType: pulumi.String(\"httpStatusesList\"),\n\t\t\t\t\t\t\t\t\tPassIfFound: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"\u003e=400\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.dynatrace.DynatraceFunctions;\nimport com.pulumi.dynatrace.inputs.GetCredentialsArgs;\nimport com.pulumi.dynatrace.HttpMonitor;\nimport com.pulumi.dynatrace.HttpMonitorArgs;\nimport com.pulumi.dynatrace.inputs.HttpMonitorAnomalyDetectionArgs;\nimport com.pulumi.dynatrace.inputs.HttpMonitorScriptArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var creds = DynatraceFunctions.getCredentials(GetCredentialsArgs.builder()\n .name(\"Office365 Access Token\")\n .build());\n\n var _name_ = new HttpMonitor(\"#name#\", HttpMonitorArgs.builder() \n .enabled(true)\n .frequency(60)\n .locations(\"SYNTHETIC_LOCATION-781752216580B1BC\")\n .anomalyDetections(HttpMonitorAnomalyDetectionArgs.builder()\n .loadingTimeThresholds(HttpMonitorAnomalyDetectionLoadingTimeThresholdArgs.builder()\n .enabled(true)\n .build())\n .outageHandlings(HttpMonitorAnomalyDetectionOutageHandlingArgs.builder()\n .globalOutage(true)\n .localOutage(false)\n .retryOnError(false)\n .build())\n .build())\n .script(HttpMonitorScriptArgs.builder()\n .requests(HttpMonitorScriptRequestArgs.builder()\n .description(\"google.com\")\n .method(\"GET\")\n .url(\"https://www.google.com\")\n .authentication(HttpMonitorScriptRequestAuthenticationArgs.builder()\n .type(\"BASIC_AUTHENTICATION\")\n .credentials(creds.applyValue(getCredentialsResult -\u003e getCredentialsResult.id()))\n .build())\n .configuration(HttpMonitorScriptRequestConfigurationArgs.builder()\n .acceptAnyCertificate(true)\n .followRedirects(true)\n .build())\n .validation(HttpMonitorScriptRequestValidationArgs.builder()\n .rules(HttpMonitorScriptRequestValidationRuleArgs.builder()\n .type(\"httpStatusesList\")\n .passIfFound(false)\n .value(\"\u003e=400\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n '#name#':\n type: dynatrace:HttpMonitor\n properties:\n enabled: true\n frequency: 60\n locations:\n - SYNTHETIC_LOCATION-781752216580B1BC\n anomalyDetections:\n - loadingTimeThresholds:\n - enabled: true\n outageHandlings:\n - globalOutage: true\n localOutage: false\n retryOnError: false\n script:\n requests:\n - description: google.com\n method: GET\n url: https://www.google.com\n authentication:\n type: BASIC_AUTHENTICATION\n credentials: ${creds.id}\n configuration:\n acceptAnyCertificate: true\n followRedirects: true\n validation:\n rules:\n - type: httpStatusesList\n passIfFound: false\n value: '\u003e=400'\nvariables:\n creds:\n fn::invoke:\n Function: dynatrace:getCredentials\n Arguments:\n name: Office365 Access Token\n```\n{{% /example %}}\n{{% /examples %}}", "inputs": { "description": "A collection of arguments for invoking getCredentials.\n", "properties": { - "credentials": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "name": { + "type": "string", + "description": "The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match\n" + }, + "scope": { + "type": "string", + "description": "The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match.\n" + }, + "type": { + "type": "string", + "description": "The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match\n" } }, "type": "object" @@ -42962,15 +45119,21 @@ "outputs": { "description": "A collection of values returned by getCredentials.\n", "properties": { - "credentials": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, "id": { "type": "string", "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "name": { + "type": "string", + "description": "The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match\n" + }, + "scope": { + "type": "string", + "description": "The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match.\n" + }, + "type": { + "type": "string", + "description": "The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match\n" } }, "type": "object", diff --git a/provider/go.mod b/provider/go.mod index facd5872..1150cda8 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -5,7 +5,7 @@ go 1.19 replace github.com/hashicorp/terraform-plugin-sdk/v2 => github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20220824175045-450992f2f5b9 require ( - github.com/dynatrace-oss/terraform-provider-dynatrace v1.13.2 + github.com/dynatrace-oss/terraform-provider-dynatrace v1.14.1 github.com/pulumi/pulumi-terraform-bridge/v3 v3.33.0 github.com/pulumi/pulumi/sdk/v3 v3.45.0 ) diff --git a/provider/resources.go b/provider/resources.go index b006ed0d..9ef2e359 100644 --- a/provider/resources.go +++ b/provider/resources.go @@ -134,6 +134,7 @@ func Provider() tfbridge.ProviderInfo { "dynatrace_application_data_privacy": {Tok: dynatraceResource(mainMod, "ApplicationDataPrivacy")}, "dynatrace_application_detection_rule": {Tok: dynatraceResource(mainMod, "ApplicationDetectionRule")}, "dynatrace_application_error_rules": {Tok: dynatraceResource(mainMod, "ApplicationErrorRules")}, + "dynatrace_ansible_tower_notification": {Tok: dynatraceResource(mainMod, "AnsibleTowerNotification")}, "dynatrace_autotag": {Tok: dynatraceResource(mainMod, "Autotag")}, "dynatrace_aws_credentials": {Tok: dynatraceResource(mainMod, "AwsCredentials")}, "dynatrace_azure_credentials": {Tok: dynatraceResource(mainMod, "AzureCredentials")}, @@ -147,18 +148,24 @@ func Provider() tfbridge.ProviderInfo { "dynatrace_database_anomalies": {Tok: dynatraceResource(mainMod, "DatabaseAnomalies")}, "dynatrace_disk_anomalies": {Tok: dynatraceResource(mainMod, "DiskAnomalies")}, "dynatrace_environment": {Tok: dynatraceResource(mainMod, "Environment")}, + "dynatrace_email_notification": {Tok: dynatraceResource(mainMod, "EmailNotification")}, + "dynatrace_frequent_issues": {Tok: dynatraceResource(mainMod, "FrequentIssues")}, "dynatrace_host_anomalies": {Tok: dynatraceResource(mainMod, "HostAnomalies")}, "dynatrace_host_naming": {Tok: dynatraceResource(mainMod, "HostNaming")}, "dynatrace_http_monitor": {Tok: dynatraceResource(mainMod, "HttpMonitor")}, "dynatrace_ibm_mq_filters": {Tok: dynatraceResource(mainMod, "IbmMqFilters")}, "dynatrace_ims_bridges": {Tok: dynatraceResource(mainMod, "ImsBridges")}, + "dynatrace_jira_notification": {Tok: dynatraceResource(mainMod, "JiraNotification")}, "dynatrace_k8s_credentials": {Tok: dynatraceResource(mainMod, "K8sCredentials")}, "dynatrace_key_requests": {Tok: dynatraceResource(mainMod, "KeyRequests")}, + "dynatrace_maintenance": {Tok: dynatraceResource(mainMod, "Maintenance")}, "dynatrace_maintenance_window": {Tok: dynatraceResource(mainMod, "MaintenanceWindow")}, "dynatrace_management_zone": {Tok: dynatraceResource(mainMod, "ManagementZone")}, "dynatrace_mobile_application": {Tok: dynatraceResource(mainMod, "MobileApplication")}, "dynatrace_network_zones": {Tok: dynatraceResource(mainMod, "NetworkZones")}, "dynatrace_notification": {Tok: dynatraceResource(mainMod, "Notification")}, + "dynatrace_ops_genie_notification": {Tok: dynatraceResource(mainMod, "OpsGenieNotification")}, + "dynatrace_pager_duty_notification": {Tok: dynatraceResource(mainMod, "PagerDutyNotification")}, "dynatrace_processgroup_naming": {Tok: dynatraceResource(mainMod, "ProcessgroupNaming")}, "dynatrace_queue_manager": {Tok: dynatraceResource(mainMod, "QueueManager")}, "dynatrace_queue_sharing_groups": {Tok: dynatraceResource(mainMod, "QueueSharingGroups")}, @@ -168,16 +175,23 @@ func Provider() tfbridge.ProviderInfo { "dynatrace_resource_attributes": {Tok: dynatraceResource(mainMod, "ResourceAttributes")}, "dynatrace_service_anomalies": {Tok: dynatraceResource(mainMod, "ServiceAnomalies")}, "dynatrace_service_naming": {Tok: dynatraceResource(mainMod, "ServiceNaming")}, + "dynatrace_service_now_notification": {Tok: dynatraceResource(mainMod, "ServiceNowNotification")}, + "dynatrace_slack_notification": {Tok: dynatraceResource(mainMod, "SlackNotification")}, "dynatrace_slo": {Tok: dynatraceResource(mainMod, "Slo")}, "dynatrace_span_attribute": {Tok: dynatraceResource(mainMod, "SpanAttributed")}, "dynatrace_span_capture_rule": {Tok: dynatraceResource(mainMod, "SpanCaptureRule")}, "dynatrace_span_context_propagation": {Tok: dynatraceResource(mainMod, "SpanContextPropagation")}, "dynatrace_span_entry_point": {Tok: dynatraceResource(mainMod, "SpanEntryPoint")}, + "dynatrace_trello_notification": {Tok: dynatraceResource(mainMod, "TrrelloNotification")}, "dynatrace_user": {Tok: dynatraceResource(mainMod, "User")}, "dynatrace_user_group": {Tok: dynatraceResource(mainMod, "UserGroup")}, + "dynatrace_victor_ops_notification": {Tok: dynatraceResource(mainMod, "VictorOpsNotification")}, "dynatrace_web_application": {Tok: dynatraceResource(mainMod, "WebApplication")}, + "dynatrace_webhook_notification": {Tok: dynatraceResource(mainMod, "WebhookNotification")}, + "dynatrace_xmatters_notification": {Tok: dynatraceResource(mainMod, "XmattersNotification")}, }, DataSources: map[string]*tfbridge.DataSourceInfo{ + "dynatrace_alerting_profile": {Tok: dynatraceDataSource(mainMod, "getAlertingProfile")}, "dynatrace_alerting_profiles": {Tok: dynatraceDataSource(mainMod, "getAlertingProfiles")}, "dynatrace_application": {Tok: dynatraceDataSource(mainMod, "getApplication")}, "dynatrace_aws_iam_external": {Tok: dynatraceDataSource(mainMod, "getAwsIamExternal")}, diff --git a/sdk/dotnet/Dynatrace/AnsibleTowerNotification.cs b/sdk/dotnet/Dynatrace/AnsibleTowerNotification.cs new file mode 100644 index 00000000..97208546 --- /dev/null +++ b/sdk/dotnet/Dynatrace/AnsibleTowerNotification.cs @@ -0,0 +1,244 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace +{ + [DynatraceResourceType("dynatrace:index/ansibleTowerNotification:AnsibleTowerNotification")] + public partial class AnsibleTowerNotification : global::Pulumi.CustomResource + { + /// + /// The notification is active (`true`) or inactive (`false`). Default is `false`. + /// + [Output("active")] + public Output Active { get; private set; } = null!; + + /// + /// The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Output("customMessage")] + public Output CustomMessage { get; private set; } = null!; + + /// + /// Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + /// + [Output("insecure")] + public Output Insecure { get; private set; } = null!; + + /// + /// The URL of the target Ansible Tower job template + /// + [Output("jobTemplateUrl")] + public Output JobTemplateUrl { get; private set; } = null!; + + /// + /// The display name within the Dynatrace WebUI. + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// The password for the Ansible Tower account + /// + [Output("password")] + public Output Password { get; private set; } = null!; + + /// + /// The ID of the associated alerting profile. + /// + [Output("profile")] + public Output Profile { get; private set; } = null!; + + /// + /// The username of the Ansible Tower account + /// + [Output("username")] + public Output Username { get; private set; } = null!; + + + /// + /// Create a AnsibleTowerNotification resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public AnsibleTowerNotification(string name, AnsibleTowerNotificationArgs args, CustomResourceOptions? options = null) + : base("dynatrace:index/ansibleTowerNotification:AnsibleTowerNotification", name, args ?? new AnsibleTowerNotificationArgs(), MakeResourceOptions(options, "")) + { + } + + private AnsibleTowerNotification(string name, Input id, AnsibleTowerNotificationState? state = null, CustomResourceOptions? options = null) + : base("dynatrace:index/ansibleTowerNotification:AnsibleTowerNotification", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "github://api.github.com/lbrlabs", + AdditionalSecretOutputs = + { + "password", + }, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing AnsibleTowerNotification resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static AnsibleTowerNotification Get(string name, Input id, AnsibleTowerNotificationState? state = null, CustomResourceOptions? options = null) + { + return new AnsibleTowerNotification(name, id, state, options); + } + } + + public sealed class AnsibleTowerNotificationArgs : global::Pulumi.ResourceArgs + { + /// + /// The notification is active (`true`) or inactive (`false`). Default is `false`. + /// + [Input("active")] + public Input? Active { get; set; } + + /// + /// The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Input("customMessage", required: true)] + public Input CustomMessage { get; set; } = null!; + + /// + /// Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + /// + [Input("insecure")] + public Input? Insecure { get; set; } + + /// + /// The URL of the target Ansible Tower job template + /// + [Input("jobTemplateUrl", required: true)] + public Input JobTemplateUrl { get; set; } = null!; + + /// + /// The display name within the Dynatrace WebUI. + /// + [Input("name")] + public Input? Name { get; set; } + + [Input("password")] + private Input? _password; + + /// + /// The password for the Ansible Tower account + /// + public Input? Password + { + get => _password; + set + { + var emptySecret = Output.CreateSecret(0); + _password = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// The ID of the associated alerting profile. + /// + [Input("profile", required: true)] + public Input Profile { get; set; } = null!; + + /// + /// The username of the Ansible Tower account + /// + [Input("username", required: true)] + public Input Username { get; set; } = null!; + + public AnsibleTowerNotificationArgs() + { + } + public static new AnsibleTowerNotificationArgs Empty => new AnsibleTowerNotificationArgs(); + } + + public sealed class AnsibleTowerNotificationState : global::Pulumi.ResourceArgs + { + /// + /// The notification is active (`true`) or inactive (`false`). Default is `false`. + /// + [Input("active")] + public Input? Active { get; set; } + + /// + /// The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Input("customMessage")] + public Input? CustomMessage { get; set; } + + /// + /// Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + /// + [Input("insecure")] + public Input? Insecure { get; set; } + + /// + /// The URL of the target Ansible Tower job template + /// + [Input("jobTemplateUrl")] + public Input? JobTemplateUrl { get; set; } + + /// + /// The display name within the Dynatrace WebUI. + /// + [Input("name")] + public Input? Name { get; set; } + + [Input("password")] + private Input? _password; + + /// + /// The password for the Ansible Tower account + /// + public Input? Password + { + get => _password; + set + { + var emptySecret = Output.CreateSecret(0); + _password = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// The ID of the associated alerting profile. + /// + [Input("profile")] + public Input? Profile { get; set; } + + /// + /// The username of the Ansible Tower account + /// + [Input("username")] + public Input? Username { get; set; } + + public AnsibleTowerNotificationState() + { + } + public static new AnsibleTowerNotificationState Empty => new AnsibleTowerNotificationState(); + } +} diff --git a/sdk/dotnet/Dynatrace/EmailNotification.cs b/sdk/dotnet/Dynatrace/EmailNotification.cs new file mode 100644 index 00000000..a0a08e68 --- /dev/null +++ b/sdk/dotnet/Dynatrace/EmailNotification.cs @@ -0,0 +1,274 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace +{ + [DynatraceResourceType("dynatrace:index/emailNotification:EmailNotification")] + public partial class EmailNotification : global::Pulumi.CustomResource + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Output("active")] + public Output Active { get; private set; } = null!; + + /// + /// The list of the email BCC-recipients + /// + [Output("bccs")] + public Output> Bccs { get; private set; } = null!; + + /// + /// The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Output("body")] + public Output Body { get; private set; } = null!; + + /// + /// The list of the email CC-recipients + /// + [Output("ccs")] + public Output> Ccs { get; private set; } = null!; + + /// + /// The name of the notification configuration + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// Send email if problem is closed + /// + [Output("notifyClosedProblems")] + public Output NotifyClosedProblems { get; private set; } = null!; + + /// + /// The ID of the associated alerting profile + /// + [Output("profile")] + public Output Profile { get; private set; } = null!; + + /// + /// The subject of the email notifications + /// + [Output("subject")] + public Output Subject { get; private set; } = null!; + + /// + /// The list of the email recipients + /// + [Output("tos")] + public Output> Tos { get; private set; } = null!; + + + /// + /// Create a EmailNotification resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public EmailNotification(string name, EmailNotificationArgs args, CustomResourceOptions? options = null) + : base("dynatrace:index/emailNotification:EmailNotification", name, args ?? new EmailNotificationArgs(), MakeResourceOptions(options, "")) + { + } + + private EmailNotification(string name, Input id, EmailNotificationState? state = null, CustomResourceOptions? options = null) + : base("dynatrace:index/emailNotification:EmailNotification", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "github://api.github.com/lbrlabs", + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing EmailNotification resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static EmailNotification Get(string name, Input id, EmailNotificationState? state = null, CustomResourceOptions? options = null) + { + return new EmailNotification(name, id, state, options); + } + } + + public sealed class EmailNotificationArgs : global::Pulumi.ResourceArgs + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active")] + public Input? Active { get; set; } + + [Input("bccs")] + private InputList? _bccs; + + /// + /// The list of the email BCC-recipients + /// + public InputList Bccs + { + get => _bccs ?? (_bccs = new InputList()); + set => _bccs = value; + } + + /// + /// The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Input("body", required: true)] + public Input Body { get; set; } = null!; + + [Input("ccs")] + private InputList? _ccs; + + /// + /// The list of the email CC-recipients + /// + public InputList Ccs + { + get => _ccs ?? (_ccs = new InputList()); + set => _ccs = value; + } + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// Send email if problem is closed + /// + [Input("notifyClosedProblems")] + public Input? NotifyClosedProblems { get; set; } + + /// + /// The ID of the associated alerting profile + /// + [Input("profile", required: true)] + public Input Profile { get; set; } = null!; + + /// + /// The subject of the email notifications + /// + [Input("subject", required: true)] + public Input Subject { get; set; } = null!; + + [Input("tos", required: true)] + private InputList? _tos; + + /// + /// The list of the email recipients + /// + public InputList Tos + { + get => _tos ?? (_tos = new InputList()); + set => _tos = value; + } + + public EmailNotificationArgs() + { + } + public static new EmailNotificationArgs Empty => new EmailNotificationArgs(); + } + + public sealed class EmailNotificationState : global::Pulumi.ResourceArgs + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active")] + public Input? Active { get; set; } + + [Input("bccs")] + private InputList? _bccs; + + /// + /// The list of the email BCC-recipients + /// + public InputList Bccs + { + get => _bccs ?? (_bccs = new InputList()); + set => _bccs = value; + } + + /// + /// The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Input("body")] + public Input? Body { get; set; } + + [Input("ccs")] + private InputList? _ccs; + + /// + /// The list of the email CC-recipients + /// + public InputList Ccs + { + get => _ccs ?? (_ccs = new InputList()); + set => _ccs = value; + } + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// Send email if problem is closed + /// + [Input("notifyClosedProblems")] + public Input? NotifyClosedProblems { get; set; } + + /// + /// The ID of the associated alerting profile + /// + [Input("profile")] + public Input? Profile { get; set; } + + /// + /// The subject of the email notifications + /// + [Input("subject")] + public Input? Subject { get; set; } + + [Input("tos")] + private InputList? _tos; + + /// + /// The list of the email recipients + /// + public InputList Tos + { + get => _tos ?? (_tos = new InputList()); + set => _tos = value; + } + + public EmailNotificationState() + { + } + public static new EmailNotificationState Empty => new EmailNotificationState(); + } +} diff --git a/sdk/dotnet/Dynatrace/FrequentIssues.cs b/sdk/dotnet/Dynatrace/FrequentIssues.cs new file mode 100644 index 00000000..b097276e --- /dev/null +++ b/sdk/dotnet/Dynatrace/FrequentIssues.cs @@ -0,0 +1,130 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace +{ + [DynatraceResourceType("dynatrace:index/frequentIssues:FrequentIssues")] + public partial class FrequentIssues : global::Pulumi.CustomResource + { + /// + /// Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + /// + [Output("detectApps")] + public Output DetectApps { get; private set; } = null!; + + /// + /// Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + /// + [Output("detectInfra")] + public Output DetectInfra { get; private set; } = null!; + + /// + /// Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + /// + [Output("detectTxn")] + public Output DetectTxn { get; private set; } = null!; + + + /// + /// Create a FrequentIssues resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public FrequentIssues(string name, FrequentIssuesArgs args, CustomResourceOptions? options = null) + : base("dynatrace:index/frequentIssues:FrequentIssues", name, args ?? new FrequentIssuesArgs(), MakeResourceOptions(options, "")) + { + } + + private FrequentIssues(string name, Input id, FrequentIssuesState? state = null, CustomResourceOptions? options = null) + : base("dynatrace:index/frequentIssues:FrequentIssues", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "github://api.github.com/lbrlabs", + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing FrequentIssues resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static FrequentIssues Get(string name, Input id, FrequentIssuesState? state = null, CustomResourceOptions? options = null) + { + return new FrequentIssues(name, id, state, options); + } + } + + public sealed class FrequentIssuesArgs : global::Pulumi.ResourceArgs + { + /// + /// Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + /// + [Input("detectApps", required: true)] + public Input DetectApps { get; set; } = null!; + + /// + /// Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + /// + [Input("detectInfra", required: true)] + public Input DetectInfra { get; set; } = null!; + + /// + /// Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + /// + [Input("detectTxn", required: true)] + public Input DetectTxn { get; set; } = null!; + + public FrequentIssuesArgs() + { + } + public static new FrequentIssuesArgs Empty => new FrequentIssuesArgs(); + } + + public sealed class FrequentIssuesState : global::Pulumi.ResourceArgs + { + /// + /// Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + /// + [Input("detectApps")] + public Input? DetectApps { get; set; } + + /// + /// Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + /// + [Input("detectInfra")] + public Input? DetectInfra { get; set; } + + /// + /// Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + /// + [Input("detectTxn")] + public Input? DetectTxn { get; set; } + + public FrequentIssuesState() + { + } + public static new FrequentIssuesState Empty => new FrequentIssuesState(); + } +} diff --git a/sdk/dotnet/Dynatrace/GetAlertingProfile.cs b/sdk/dotnet/Dynatrace/GetAlertingProfile.cs new file mode 100644 index 00000000..02c7254e --- /dev/null +++ b/sdk/dotnet/Dynatrace/GetAlertingProfile.cs @@ -0,0 +1,139 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace +{ + public static class GetAlertingProfile + { + /// + /// The Alerting Profile queries for an Alerting Profile that has a specified name. In case multiple Alerting Profiles share the same name the first one found will be used. + /// The ID of this Data Resource aligns with the IDs used by the Dynatrace Settings 2.0 API. + /// + /// {{% examples %}} + /// ## Example Usage + /// {{% example %}} + /// + /// ```csharp + /// using System.Collections.Generic; + /// using Pulumi; + /// using Dynatrace = Lbrlabs.PulumiPackage.Dynatrace; + /// using Dynatrace = Pulumi.Dynatrace; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var @default = Dynatrace.GetAlertingProfile.Invoke(new() + /// { + /// Name = "Default", + /// }); + /// + /// var myWebhookNotification = new Dynatrace.WebhookNotification("myWebhookNotification", new() + /// { + /// Active = false, + /// Profile = @default.Apply(getAlertingProfileResult => getAlertingProfileResult).Apply(@default => @default.Apply(getAlertingProfileResult => getAlertingProfileResult.Id)), + /// Url = "https://webhook.site/40bf4d43-1a50-4ebd-913d-bf50ce7c3a1e", + /// Insecure = true, + /// NotifyEventMerges = true, + /// NotifyClosedProblems = true, + /// Payload = "web-hook-payload", + /// }); + /// + /// }); + /// ``` + /// {{% /example %}} + /// {{% /examples %}} + /// + public static Task InvokeAsync(GetAlertingProfileArgs args, InvokeOptions? options = null) + => global::Pulumi.Deployment.Instance.InvokeAsync("dynatrace:index/getAlertingProfile:getAlertingProfile", args ?? new GetAlertingProfileArgs(), options.WithDefaults()); + + /// + /// The Alerting Profile queries for an Alerting Profile that has a specified name. In case multiple Alerting Profiles share the same name the first one found will be used. + /// The ID of this Data Resource aligns with the IDs used by the Dynatrace Settings 2.0 API. + /// + /// {{% examples %}} + /// ## Example Usage + /// {{% example %}} + /// + /// ```csharp + /// using System.Collections.Generic; + /// using Pulumi; + /// using Dynatrace = Lbrlabs.PulumiPackage.Dynatrace; + /// using Dynatrace = Pulumi.Dynatrace; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var @default = Dynatrace.GetAlertingProfile.Invoke(new() + /// { + /// Name = "Default", + /// }); + /// + /// var myWebhookNotification = new Dynatrace.WebhookNotification("myWebhookNotification", new() + /// { + /// Active = false, + /// Profile = @default.Apply(getAlertingProfileResult => getAlertingProfileResult).Apply(@default => @default.Apply(getAlertingProfileResult => getAlertingProfileResult.Id)), + /// Url = "https://webhook.site/40bf4d43-1a50-4ebd-913d-bf50ce7c3a1e", + /// Insecure = true, + /// NotifyEventMerges = true, + /// NotifyClosedProblems = true, + /// Payload = "web-hook-payload", + /// }); + /// + /// }); + /// ``` + /// {{% /example %}} + /// {{% /examples %}} + /// + public static Output Invoke(GetAlertingProfileInvokeArgs args, InvokeOptions? options = null) + => global::Pulumi.Deployment.Instance.Invoke("dynatrace:index/getAlertingProfile:getAlertingProfile", args ?? new GetAlertingProfileInvokeArgs(), options.WithDefaults()); + } + + + public sealed class GetAlertingProfileArgs : global::Pulumi.InvokeArgs + { + [Input("name", required: true)] + public string Name { get; set; } = null!; + + public GetAlertingProfileArgs() + { + } + public static new GetAlertingProfileArgs Empty => new GetAlertingProfileArgs(); + } + + public sealed class GetAlertingProfileInvokeArgs : global::Pulumi.InvokeArgs + { + [Input("name", required: true)] + public Input Name { get; set; } = null!; + + public GetAlertingProfileInvokeArgs() + { + } + public static new GetAlertingProfileInvokeArgs Empty => new GetAlertingProfileInvokeArgs(); + } + + + [OutputType] + public sealed class GetAlertingProfileResult + { + /// + /// The provider-assigned unique ID for this managed resource. + /// + public readonly string Id; + public readonly string Name; + + [OutputConstructor] + private GetAlertingProfileResult( + string id, + + string name) + { + Id = id; + Name = name; + } + } +} diff --git a/sdk/dotnet/Dynatrace/GetCredentials.cs b/sdk/dotnet/Dynatrace/GetCredentials.cs index 134f70c4..4c31b70d 100644 --- a/sdk/dotnet/Dynatrace/GetCredentials.cs +++ b/sdk/dotnet/Dynatrace/GetCredentials.cs @@ -13,13 +13,189 @@ namespace Lbrlabs.PulumiPackage.Dynatrace public static class GetCredentials { /// - /// The credentials data source allows retrieval of all credentials. + /// The `dynatrace.getCredentials` data source queries for Credentials stored within the Credentials Vault using the properties `name`, `scope` and `type`. At least one of `name`, `scope` or `type` needs to be specified as a non empty value. Combinations of the three properties are also possible. + /// + /// {{% examples %}} + /// ## Example Usage + /// {{% example %}} + /// + /// ```csharp + /// using System.Collections.Generic; + /// using Pulumi; + /// using Dynatrace = Lbrlabs.PulumiPackage.Dynatrace; + /// using Dynatrace = Pulumi.Dynatrace; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var creds = Dynatrace.GetCredentials.Invoke(new() + /// { + /// Name = "Office365 Access Token", + /// }); + /// + /// var _name_ = new Dynatrace.HttpMonitor("#name#", new() + /// { + /// Enabled = true, + /// Frequency = 60, + /// Locations = new[] + /// { + /// "SYNTHETIC_LOCATION-781752216580B1BC", + /// }, + /// AnomalyDetections = new[] + /// { + /// new Dynatrace.Inputs.HttpMonitorAnomalyDetectionArgs + /// { + /// LoadingTimeThresholds = new[] + /// { + /// new Dynatrace.Inputs.HttpMonitorAnomalyDetectionLoadingTimeThresholdArgs + /// { + /// Enabled = true, + /// }, + /// }, + /// OutageHandlings = new[] + /// { + /// new Dynatrace.Inputs.HttpMonitorAnomalyDetectionOutageHandlingArgs + /// { + /// GlobalOutage = true, + /// LocalOutage = false, + /// RetryOnError = false, + /// }, + /// }, + /// }, + /// }, + /// Script = new Dynatrace.Inputs.HttpMonitorScriptArgs + /// { + /// Requests = new[] + /// { + /// new Dynatrace.Inputs.HttpMonitorScriptRequestArgs + /// { + /// Description = "google.com", + /// Method = "GET", + /// Url = "https://www.google.com", + /// Authentication = new Dynatrace.Inputs.HttpMonitorScriptRequestAuthenticationArgs + /// { + /// Type = "BASIC_AUTHENTICATION", + /// Credentials = creds.Apply(getCredentialsResult => getCredentialsResult.Id), + /// }, + /// Configuration = new Dynatrace.Inputs.HttpMonitorScriptRequestConfigurationArgs + /// { + /// AcceptAnyCertificate = true, + /// FollowRedirects = true, + /// }, + /// Validation = new Dynatrace.Inputs.HttpMonitorScriptRequestValidationArgs + /// { + /// Rules = new[] + /// { + /// new Dynatrace.Inputs.HttpMonitorScriptRequestValidationRuleArgs + /// { + /// Type = "httpStatusesList", + /// PassIfFound = false, + /// Value = ">=400", + /// }, + /// }, + /// }, + /// }, + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// {{% /example %}} + /// {{% /examples %}} /// public static Task InvokeAsync(GetCredentialsArgs? args = null, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.InvokeAsync("dynatrace:index/getCredentials:getCredentials", args ?? new GetCredentialsArgs(), options.WithDefaults()); /// - /// The credentials data source allows retrieval of all credentials. + /// The `dynatrace.getCredentials` data source queries for Credentials stored within the Credentials Vault using the properties `name`, `scope` and `type`. At least one of `name`, `scope` or `type` needs to be specified as a non empty value. Combinations of the three properties are also possible. + /// + /// {{% examples %}} + /// ## Example Usage + /// {{% example %}} + /// + /// ```csharp + /// using System.Collections.Generic; + /// using Pulumi; + /// using Dynatrace = Lbrlabs.PulumiPackage.Dynatrace; + /// using Dynatrace = Pulumi.Dynatrace; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var creds = Dynatrace.GetCredentials.Invoke(new() + /// { + /// Name = "Office365 Access Token", + /// }); + /// + /// var _name_ = new Dynatrace.HttpMonitor("#name#", new() + /// { + /// Enabled = true, + /// Frequency = 60, + /// Locations = new[] + /// { + /// "SYNTHETIC_LOCATION-781752216580B1BC", + /// }, + /// AnomalyDetections = new[] + /// { + /// new Dynatrace.Inputs.HttpMonitorAnomalyDetectionArgs + /// { + /// LoadingTimeThresholds = new[] + /// { + /// new Dynatrace.Inputs.HttpMonitorAnomalyDetectionLoadingTimeThresholdArgs + /// { + /// Enabled = true, + /// }, + /// }, + /// OutageHandlings = new[] + /// { + /// new Dynatrace.Inputs.HttpMonitorAnomalyDetectionOutageHandlingArgs + /// { + /// GlobalOutage = true, + /// LocalOutage = false, + /// RetryOnError = false, + /// }, + /// }, + /// }, + /// }, + /// Script = new Dynatrace.Inputs.HttpMonitorScriptArgs + /// { + /// Requests = new[] + /// { + /// new Dynatrace.Inputs.HttpMonitorScriptRequestArgs + /// { + /// Description = "google.com", + /// Method = "GET", + /// Url = "https://www.google.com", + /// Authentication = new Dynatrace.Inputs.HttpMonitorScriptRequestAuthenticationArgs + /// { + /// Type = "BASIC_AUTHENTICATION", + /// Credentials = creds.Apply(getCredentialsResult => getCredentialsResult.Id), + /// }, + /// Configuration = new Dynatrace.Inputs.HttpMonitorScriptRequestConfigurationArgs + /// { + /// AcceptAnyCertificate = true, + /// FollowRedirects = true, + /// }, + /// Validation = new Dynatrace.Inputs.HttpMonitorScriptRequestValidationArgs + /// { + /// Rules = new[] + /// { + /// new Dynatrace.Inputs.HttpMonitorScriptRequestValidationRuleArgs + /// { + /// Type = "httpStatusesList", + /// PassIfFound = false, + /// Value = ">=400", + /// }, + /// }, + /// }, + /// }, + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// {{% /example %}} + /// {{% /examples %}} /// public static Output Invoke(GetCredentialsInvokeArgs? args = null, InvokeOptions? options = null) => global::Pulumi.Deployment.Instance.Invoke("dynatrace:index/getCredentials:getCredentials", args ?? new GetCredentialsInvokeArgs(), options.WithDefaults()); @@ -28,13 +204,23 @@ public static Output Invoke(GetCredentialsInvokeArgs? args public sealed class GetCredentialsArgs : global::Pulumi.InvokeArgs { - [Input("credentials")] - private Dictionary? _credentials; - public Dictionary Credentials - { - get => _credentials ?? (_credentials = new Dictionary()); - set => _credentials = value; - } + /// + /// The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + /// + [Input("name")] + public string? Name { get; set; } + + /// + /// The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + /// + [Input("scope")] + public string? Scope { get; set; } + + /// + /// The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + /// + [Input("type")] + public string? Type { get; set; } public GetCredentialsArgs() { @@ -44,13 +230,23 @@ public GetCredentialsArgs() public sealed class GetCredentialsInvokeArgs : global::Pulumi.InvokeArgs { - [Input("credentials")] - private InputMap? _credentials; - public InputMap Credentials - { - get => _credentials ?? (_credentials = new InputMap()); - set => _credentials = value; - } + /// + /// The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + /// + [Input("scope")] + public Input? Scope { get; set; } + + /// + /// The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + /// + [Input("type")] + public Input? Type { get; set; } public GetCredentialsInvokeArgs() { @@ -62,20 +258,37 @@ public GetCredentialsInvokeArgs() [OutputType] public sealed class GetCredentialsResult { - public readonly ImmutableDictionary? Credentials; /// /// The provider-assigned unique ID for this managed resource. /// public readonly string Id; + /// + /// The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + /// + public readonly string? Name; + /// + /// The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + /// + public readonly string? Scope; + /// + /// The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + /// + public readonly string? Type; [OutputConstructor] private GetCredentialsResult( - ImmutableDictionary? credentials, + string id, + + string? name, + + string? scope, - string id) + string? type) { - Credentials = credentials; Id = id; + Name = name; + Scope = scope; + Type = type; } } } diff --git a/sdk/dotnet/Dynatrace/Inputs/AutotagEntitySelectorBasedRuleArgs.cs b/sdk/dotnet/Dynatrace/Inputs/AutotagEntitySelectorBasedRuleArgs.cs index a3ea87a3..4e34e713 100644 --- a/sdk/dotnet/Dynatrace/Inputs/AutotagEntitySelectorBasedRuleArgs.cs +++ b/sdk/dotnet/Dynatrace/Inputs/AutotagEntitySelectorBasedRuleArgs.cs @@ -16,6 +16,9 @@ public sealed class AutotagEntitySelectorBasedRuleArgs : global::Pulumi.Resource [Input("enabled")] public Input? Enabled { get; set; } + [Input("normalization")] + public Input? Normalization { get; set; } + [Input("selector")] public Input? Selector { get; set; } diff --git a/sdk/dotnet/Dynatrace/Inputs/AutotagEntitySelectorBasedRuleGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/AutotagEntitySelectorBasedRuleGetArgs.cs index 1042b665..b4fbdb8b 100644 --- a/sdk/dotnet/Dynatrace/Inputs/AutotagEntitySelectorBasedRuleGetArgs.cs +++ b/sdk/dotnet/Dynatrace/Inputs/AutotagEntitySelectorBasedRuleGetArgs.cs @@ -16,6 +16,9 @@ public sealed class AutotagEntitySelectorBasedRuleGetArgs : global::Pulumi.Resou [Input("enabled")] public Input? Enabled { get; set; } + [Input("normalization")] + public Input? Normalization { get; set; } + [Input("selector")] public Input? Selector { get; set; } diff --git a/sdk/dotnet/Dynatrace/Inputs/DashboardDashboardMetadataArgs.cs b/sdk/dotnet/Dynatrace/Inputs/DashboardDashboardMetadataArgs.cs index 7158c81a..1ad39d51 100644 --- a/sdk/dotnet/Dynatrace/Inputs/DashboardDashboardMetadataArgs.cs +++ b/sdk/dotnet/Dynatrace/Inputs/DashboardDashboardMetadataArgs.cs @@ -43,6 +43,12 @@ public sealed class DashboardDashboardMetadataArgs : global::Pulumi.ResourceArgs [Input("owner", required: true)] public Input Owner { get; set; } = null!; + /// + /// the dashboard is a preset (`true`) or not (`false`). Default is `false`. + /// + [Input("preset")] + public Input? Preset { get; set; } + /// /// the dashboard is shared (`true`) or private (`false`) /// diff --git a/sdk/dotnet/Dynatrace/Inputs/DashboardDashboardMetadataGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/DashboardDashboardMetadataGetArgs.cs index 1f192546..a2074ba8 100644 --- a/sdk/dotnet/Dynatrace/Inputs/DashboardDashboardMetadataGetArgs.cs +++ b/sdk/dotnet/Dynatrace/Inputs/DashboardDashboardMetadataGetArgs.cs @@ -43,6 +43,12 @@ public sealed class DashboardDashboardMetadataGetArgs : global::Pulumi.ResourceA [Input("owner", required: true)] public Input Owner { get; set; } = null!; + /// + /// the dashboard is a preset (`true`) or not (`false`). Default is `false`. + /// + [Input("preset")] + public Input? Preset { get; set; } + /// /// the dashboard is shared (`true`) or private (`false`) /// diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceFilterArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceFilterArgs.cs new file mode 100644 index 00000000..0c206fdc --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceFilterArgs.cs @@ -0,0 +1,33 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceFilterArgs : global::Pulumi.ResourceArgs + { + [Input("filters")] + private InputList? _filters; + + /// + /// A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies + /// + public InputList Filters + { + get => _filters ?? (_filters = new InputList()); + set => _filters = value; + } + + public MaintenanceFilterArgs() + { + } + public static new MaintenanceFilterArgs Empty => new MaintenanceFilterArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceFilterFilterArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceFilterFilterArgs.cs new file mode 100644 index 00000000..46e7acc5 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceFilterFilterArgs.cs @@ -0,0 +1,43 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceFilterFilterArgs : global::Pulumi.ResourceArgs + { + [Input("entityId")] + public Input? EntityId { get; set; } + + [Input("entityTags")] + private InputList? _entityTags; + public InputList EntityTags + { + get => _entityTags ?? (_entityTags = new InputList()); + set => _entityTags = value; + } + + [Input("entityType")] + public Input? EntityType { get; set; } + + [Input("managementZones")] + private InputList? _managementZones; + public InputList ManagementZones + { + get => _managementZones ?? (_managementZones = new InputList()); + set => _managementZones = value; + } + + public MaintenanceFilterFilterArgs() + { + } + public static new MaintenanceFilterFilterArgs Empty => new MaintenanceFilterFilterArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceFilterFilterGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceFilterFilterGetArgs.cs new file mode 100644 index 00000000..b75c6256 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceFilterFilterGetArgs.cs @@ -0,0 +1,43 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceFilterFilterGetArgs : global::Pulumi.ResourceArgs + { + [Input("entityId")] + public Input? EntityId { get; set; } + + [Input("entityTags")] + private InputList? _entityTags; + public InputList EntityTags + { + get => _entityTags ?? (_entityTags = new InputList()); + set => _entityTags = value; + } + + [Input("entityType")] + public Input? EntityType { get; set; } + + [Input("managementZones")] + private InputList? _managementZones; + public InputList ManagementZones + { + get => _managementZones ?? (_managementZones = new InputList()); + set => _managementZones = value; + } + + public MaintenanceFilterFilterGetArgs() + { + } + public static new MaintenanceFilterFilterGetArgs Empty => new MaintenanceFilterFilterGetArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceFilterGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceFilterGetArgs.cs new file mode 100644 index 00000000..12823d07 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceFilterGetArgs.cs @@ -0,0 +1,33 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceFilterGetArgs : global::Pulumi.ResourceArgs + { + [Input("filters")] + private InputList? _filters; + + /// + /// A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies + /// + public InputList Filters + { + get => _filters ?? (_filters = new InputList()); + set => _filters = value; + } + + public MaintenanceFilterGetArgs() + { + } + public static new MaintenanceFilterGetArgs Empty => new MaintenanceFilterGetArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceGeneralPropertiesArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceGeneralPropertiesArgs.cs new file mode 100644 index 00000000..0c56e8b8 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceGeneralPropertiesArgs.cs @@ -0,0 +1,51 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceGeneralPropertiesArgs : global::Pulumi.ResourceArgs + { + /// + /// A short description of the maintenance purpose + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// Suppress execution of synthetic monitors during the maintenance + /// + [Input("disableSynthetic")] + public Input? DisableSynthetic { get; set; } + + /// + /// The name of the maintenance window, displayed in the UI + /// + [Input("name", required: true)] + public Input Name { get; set; } = null!; + + /// + /// The type of suppression of alerting and problem detection during the maintenance + /// + [Input("suppression", required: true)] + public Input Suppression { get; set; } = null!; + + /// + /// The type of the maintenance: planned or unplanned + /// + [Input("type", required: true)] + public Input Type { get; set; } = null!; + + public MaintenanceGeneralPropertiesArgs() + { + } + public static new MaintenanceGeneralPropertiesArgs Empty => new MaintenanceGeneralPropertiesArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceGeneralPropertiesGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceGeneralPropertiesGetArgs.cs new file mode 100644 index 00000000..7f578c73 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceGeneralPropertiesGetArgs.cs @@ -0,0 +1,51 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceGeneralPropertiesGetArgs : global::Pulumi.ResourceArgs + { + /// + /// A short description of the maintenance purpose + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// Suppress execution of synthetic monitors during the maintenance + /// + [Input("disableSynthetic")] + public Input? DisableSynthetic { get; set; } + + /// + /// The name of the maintenance window, displayed in the UI + /// + [Input("name", required: true)] + public Input Name { get; set; } = null!; + + /// + /// The type of suppression of alerting and problem detection during the maintenance + /// + [Input("suppression", required: true)] + public Input Suppression { get; set; } = null!; + + /// + /// The type of the maintenance: planned or unplanned + /// + [Input("type", required: true)] + public Input Type { get; set; } = null!; + + public MaintenanceGeneralPropertiesGetArgs() + { + } + public static new MaintenanceGeneralPropertiesGetArgs Empty => new MaintenanceGeneralPropertiesGetArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleArgs.cs new file mode 100644 index 00000000..e092a268 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleArgs.cs @@ -0,0 +1,51 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleArgs : global::Pulumi.ResourceArgs + { + /// + /// The configuration for maintenance windows occuring daily + /// + [Input("dailyRecurrence")] + public Input? DailyRecurrence { get; set; } + + /// + /// The configuration for maintenance windows occuring monthly + /// + [Input("monthlyRecurrence")] + public Input? MonthlyRecurrence { get; set; } + + /// + /// The configuration for maintenance windows occuring once + /// + [Input("onceRecurrence")] + public Input? OnceRecurrence { get; set; } + + /// + /// The time window of the maintenance window + /// + [Input("type", required: true)] + public Input Type { get; set; } = null!; + + /// + /// The configuration for maintenance windows occuring weekly + /// + [Input("weeklyRecurrence")] + public Input? WeeklyRecurrence { get; set; } + + public MaintenanceScheduleArgs() + { + } + public static new MaintenanceScheduleArgs Empty => new MaintenanceScheduleArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceArgs.cs new file mode 100644 index 00000000..88e23dca --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceArgs.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleDailyRecurrenceArgs : global::Pulumi.ResourceArgs + { + [Input("recurrenceRange", required: true)] + public Input RecurrenceRange { get; set; } = null!; + + [Input("timeWindow", required: true)] + public Input TimeWindow { get; set; } = null!; + + public MaintenanceScheduleDailyRecurrenceArgs() + { + } + public static new MaintenanceScheduleDailyRecurrenceArgs Empty => new MaintenanceScheduleDailyRecurrenceArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceGetArgs.cs new file mode 100644 index 00000000..232ac487 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceGetArgs.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleDailyRecurrenceGetArgs : global::Pulumi.ResourceArgs + { + [Input("recurrenceRange", required: true)] + public Input RecurrenceRange { get; set; } = null!; + + [Input("timeWindow", required: true)] + public Input TimeWindow { get; set; } = null!; + + public MaintenanceScheduleDailyRecurrenceGetArgs() + { + } + public static new MaintenanceScheduleDailyRecurrenceGetArgs Empty => new MaintenanceScheduleDailyRecurrenceGetArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs.cs new file mode 100644 index 00000000..9e67a53f --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs : global::Pulumi.ResourceArgs + { + [Input("endDate", required: true)] + public Input EndDate { get; set; } = null!; + + [Input("startDate", required: true)] + public Input StartDate { get; set; } = null!; + + public MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs() + { + } + public static new MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs Empty => new MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceRecurrenceRangeGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceRecurrenceRangeGetArgs.cs new file mode 100644 index 00000000..910aea52 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceRecurrenceRangeGetArgs.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleDailyRecurrenceRecurrenceRangeGetArgs : global::Pulumi.ResourceArgs + { + [Input("endDate", required: true)] + public Input EndDate { get; set; } = null!; + + [Input("startDate", required: true)] + public Input StartDate { get; set; } = null!; + + public MaintenanceScheduleDailyRecurrenceRecurrenceRangeGetArgs() + { + } + public static new MaintenanceScheduleDailyRecurrenceRecurrenceRangeGetArgs Empty => new MaintenanceScheduleDailyRecurrenceRecurrenceRangeGetArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceTimeWindowArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceTimeWindowArgs.cs new file mode 100644 index 00000000..5b720236 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceTimeWindowArgs.cs @@ -0,0 +1,30 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleDailyRecurrenceTimeWindowArgs : global::Pulumi.ResourceArgs + { + [Input("endTime", required: true)] + public Input EndTime { get; set; } = null!; + + [Input("startTime", required: true)] + public Input StartTime { get; set; } = null!; + + [Input("timeZone", required: true)] + public Input TimeZone { get; set; } = null!; + + public MaintenanceScheduleDailyRecurrenceTimeWindowArgs() + { + } + public static new MaintenanceScheduleDailyRecurrenceTimeWindowArgs Empty => new MaintenanceScheduleDailyRecurrenceTimeWindowArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceTimeWindowGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceTimeWindowGetArgs.cs new file mode 100644 index 00000000..ffc19b0d --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleDailyRecurrenceTimeWindowGetArgs.cs @@ -0,0 +1,30 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleDailyRecurrenceTimeWindowGetArgs : global::Pulumi.ResourceArgs + { + [Input("endTime", required: true)] + public Input EndTime { get; set; } = null!; + + [Input("startTime", required: true)] + public Input StartTime { get; set; } = null!; + + [Input("timeZone", required: true)] + public Input TimeZone { get; set; } = null!; + + public MaintenanceScheduleDailyRecurrenceTimeWindowGetArgs() + { + } + public static new MaintenanceScheduleDailyRecurrenceTimeWindowGetArgs Empty => new MaintenanceScheduleDailyRecurrenceTimeWindowGetArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleGetArgs.cs new file mode 100644 index 00000000..e8015a39 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleGetArgs.cs @@ -0,0 +1,51 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleGetArgs : global::Pulumi.ResourceArgs + { + /// + /// The configuration for maintenance windows occuring daily + /// + [Input("dailyRecurrence")] + public Input? DailyRecurrence { get; set; } + + /// + /// The configuration for maintenance windows occuring monthly + /// + [Input("monthlyRecurrence")] + public Input? MonthlyRecurrence { get; set; } + + /// + /// The configuration for maintenance windows occuring once + /// + [Input("onceRecurrence")] + public Input? OnceRecurrence { get; set; } + + /// + /// The time window of the maintenance window + /// + [Input("type", required: true)] + public Input Type { get; set; } = null!; + + /// + /// The configuration for maintenance windows occuring weekly + /// + [Input("weeklyRecurrence")] + public Input? WeeklyRecurrence { get; set; } + + public MaintenanceScheduleGetArgs() + { + } + public static new MaintenanceScheduleGetArgs Empty => new MaintenanceScheduleGetArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceArgs.cs new file mode 100644 index 00000000..bf5c67bd --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceArgs.cs @@ -0,0 +1,30 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleMonthlyRecurrenceArgs : global::Pulumi.ResourceArgs + { + [Input("dayOfMonth", required: true)] + public Input DayOfMonth { get; set; } = null!; + + [Input("recurrenceRange", required: true)] + public Input RecurrenceRange { get; set; } = null!; + + [Input("timeWindow", required: true)] + public Input TimeWindow { get; set; } = null!; + + public MaintenanceScheduleMonthlyRecurrenceArgs() + { + } + public static new MaintenanceScheduleMonthlyRecurrenceArgs Empty => new MaintenanceScheduleMonthlyRecurrenceArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceGetArgs.cs new file mode 100644 index 00000000..0deb7188 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceGetArgs.cs @@ -0,0 +1,30 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleMonthlyRecurrenceGetArgs : global::Pulumi.ResourceArgs + { + [Input("dayOfMonth", required: true)] + public Input DayOfMonth { get; set; } = null!; + + [Input("recurrenceRange", required: true)] + public Input RecurrenceRange { get; set; } = null!; + + [Input("timeWindow", required: true)] + public Input TimeWindow { get; set; } = null!; + + public MaintenanceScheduleMonthlyRecurrenceGetArgs() + { + } + public static new MaintenanceScheduleMonthlyRecurrenceGetArgs Empty => new MaintenanceScheduleMonthlyRecurrenceGetArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs.cs new file mode 100644 index 00000000..1ae3d85f --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs : global::Pulumi.ResourceArgs + { + [Input("endDate", required: true)] + public Input EndDate { get; set; } = null!; + + [Input("startDate", required: true)] + public Input StartDate { get; set; } = null!; + + public MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs() + { + } + public static new MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs Empty => new MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeGetArgs.cs new file mode 100644 index 00000000..bfa4526e --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeGetArgs.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeGetArgs : global::Pulumi.ResourceArgs + { + [Input("endDate", required: true)] + public Input EndDate { get; set; } = null!; + + [Input("startDate", required: true)] + public Input StartDate { get; set; } = null!; + + public MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeGetArgs() + { + } + public static new MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeGetArgs Empty => new MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeGetArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs.cs new file mode 100644 index 00000000..ae7248aa --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs.cs @@ -0,0 +1,30 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs : global::Pulumi.ResourceArgs + { + [Input("endTime", required: true)] + public Input EndTime { get; set; } = null!; + + [Input("startTime", required: true)] + public Input StartTime { get; set; } = null!; + + [Input("timeZone", required: true)] + public Input TimeZone { get; set; } = null!; + + public MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs() + { + } + public static new MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs Empty => new MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceTimeWindowGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceTimeWindowGetArgs.cs new file mode 100644 index 00000000..579eac9a --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleMonthlyRecurrenceTimeWindowGetArgs.cs @@ -0,0 +1,30 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleMonthlyRecurrenceTimeWindowGetArgs : global::Pulumi.ResourceArgs + { + [Input("endTime", required: true)] + public Input EndTime { get; set; } = null!; + + [Input("startTime", required: true)] + public Input StartTime { get; set; } = null!; + + [Input("timeZone", required: true)] + public Input TimeZone { get; set; } = null!; + + public MaintenanceScheduleMonthlyRecurrenceTimeWindowGetArgs() + { + } + public static new MaintenanceScheduleMonthlyRecurrenceTimeWindowGetArgs Empty => new MaintenanceScheduleMonthlyRecurrenceTimeWindowGetArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleOnceRecurrenceArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleOnceRecurrenceArgs.cs new file mode 100644 index 00000000..76532d68 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleOnceRecurrenceArgs.cs @@ -0,0 +1,30 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleOnceRecurrenceArgs : global::Pulumi.ResourceArgs + { + [Input("endTime", required: true)] + public Input EndTime { get; set; } = null!; + + [Input("startTime", required: true)] + public Input StartTime { get; set; } = null!; + + [Input("timeZone", required: true)] + public Input TimeZone { get; set; } = null!; + + public MaintenanceScheduleOnceRecurrenceArgs() + { + } + public static new MaintenanceScheduleOnceRecurrenceArgs Empty => new MaintenanceScheduleOnceRecurrenceArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleOnceRecurrenceGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleOnceRecurrenceGetArgs.cs new file mode 100644 index 00000000..17dbfb87 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleOnceRecurrenceGetArgs.cs @@ -0,0 +1,30 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleOnceRecurrenceGetArgs : global::Pulumi.ResourceArgs + { + [Input("endTime", required: true)] + public Input EndTime { get; set; } = null!; + + [Input("startTime", required: true)] + public Input StartTime { get; set; } = null!; + + [Input("timeZone", required: true)] + public Input TimeZone { get; set; } = null!; + + public MaintenanceScheduleOnceRecurrenceGetArgs() + { + } + public static new MaintenanceScheduleOnceRecurrenceGetArgs Empty => new MaintenanceScheduleOnceRecurrenceGetArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceArgs.cs new file mode 100644 index 00000000..f0a7b26c --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceArgs.cs @@ -0,0 +1,30 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleWeeklyRecurrenceArgs : global::Pulumi.ResourceArgs + { + [Input("dayOfWeek", required: true)] + public Input DayOfWeek { get; set; } = null!; + + [Input("recurrenceRange", required: true)] + public Input RecurrenceRange { get; set; } = null!; + + [Input("timeWindow", required: true)] + public Input TimeWindow { get; set; } = null!; + + public MaintenanceScheduleWeeklyRecurrenceArgs() + { + } + public static new MaintenanceScheduleWeeklyRecurrenceArgs Empty => new MaintenanceScheduleWeeklyRecurrenceArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceGetArgs.cs new file mode 100644 index 00000000..a0632706 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceGetArgs.cs @@ -0,0 +1,30 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleWeeklyRecurrenceGetArgs : global::Pulumi.ResourceArgs + { + [Input("dayOfWeek", required: true)] + public Input DayOfWeek { get; set; } = null!; + + [Input("recurrenceRange", required: true)] + public Input RecurrenceRange { get; set; } = null!; + + [Input("timeWindow", required: true)] + public Input TimeWindow { get; set; } = null!; + + public MaintenanceScheduleWeeklyRecurrenceGetArgs() + { + } + public static new MaintenanceScheduleWeeklyRecurrenceGetArgs Empty => new MaintenanceScheduleWeeklyRecurrenceGetArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs.cs new file mode 100644 index 00000000..abe7928c --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs : global::Pulumi.ResourceArgs + { + [Input("endDate", required: true)] + public Input EndDate { get; set; } = null!; + + [Input("startDate", required: true)] + public Input StartDate { get; set; } = null!; + + public MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs() + { + } + public static new MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs Empty => new MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeGetArgs.cs new file mode 100644 index 00000000..78ca0129 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeGetArgs.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeGetArgs : global::Pulumi.ResourceArgs + { + [Input("endDate", required: true)] + public Input EndDate { get; set; } = null!; + + [Input("startDate", required: true)] + public Input StartDate { get; set; } = null!; + + public MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeGetArgs() + { + } + public static new MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeGetArgs Empty => new MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeGetArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs.cs new file mode 100644 index 00000000..a4761f07 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs.cs @@ -0,0 +1,30 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs : global::Pulumi.ResourceArgs + { + [Input("endTime", required: true)] + public Input EndTime { get; set; } = null!; + + [Input("startTime", required: true)] + public Input StartTime { get; set; } = null!; + + [Input("timeZone", required: true)] + public Input TimeZone { get; set; } = null!; + + public MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs() + { + } + public static new MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs Empty => new MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceTimeWindowGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceTimeWindowGetArgs.cs new file mode 100644 index 00000000..24dddbda --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/MaintenanceScheduleWeeklyRecurrenceTimeWindowGetArgs.cs @@ -0,0 +1,30 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class MaintenanceScheduleWeeklyRecurrenceTimeWindowGetArgs : global::Pulumi.ResourceArgs + { + [Input("endTime", required: true)] + public Input EndTime { get; set; } = null!; + + [Input("startTime", required: true)] + public Input StartTime { get; set; } = null!; + + [Input("timeZone", required: true)] + public Input TimeZone { get; set; } = null!; + + public MaintenanceScheduleWeeklyRecurrenceTimeWindowGetArgs() + { + } + public static new MaintenanceScheduleWeeklyRecurrenceTimeWindowGetArgs Empty => new MaintenanceScheduleWeeklyRecurrenceTimeWindowGetArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/WebhookNotificationHeadersArgs.cs b/sdk/dotnet/Dynatrace/Inputs/WebhookNotificationHeadersArgs.cs new file mode 100644 index 00000000..dc870ac6 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/WebhookNotificationHeadersArgs.cs @@ -0,0 +1,33 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class WebhookNotificationHeadersArgs : global::Pulumi.ResourceArgs + { + [Input("headers", required: true)] + private InputList? _headers; + + /// + /// An additional HTTP Header to include when sending requests + /// + public InputList Headers + { + get => _headers ?? (_headers = new InputList()); + set => _headers = value; + } + + public WebhookNotificationHeadersArgs() + { + } + public static new WebhookNotificationHeadersArgs Empty => new WebhookNotificationHeadersArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/WebhookNotificationHeadersGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/WebhookNotificationHeadersGetArgs.cs new file mode 100644 index 00000000..18c4e936 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/WebhookNotificationHeadersGetArgs.cs @@ -0,0 +1,33 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class WebhookNotificationHeadersGetArgs : global::Pulumi.ResourceArgs + { + [Input("headers", required: true)] + private InputList? _headers; + + /// + /// An additional HTTP Header to include when sending requests + /// + public InputList Headers + { + get => _headers ?? (_headers = new InputList()); + set => _headers = value; + } + + public WebhookNotificationHeadersGetArgs() + { + } + public static new WebhookNotificationHeadersGetArgs Empty => new WebhookNotificationHeadersGetArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/WebhookNotificationHeadersHeaderArgs.cs b/sdk/dotnet/Dynatrace/Inputs/WebhookNotificationHeadersHeaderArgs.cs new file mode 100644 index 00000000..47168a7c --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/WebhookNotificationHeadersHeaderArgs.cs @@ -0,0 +1,42 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class WebhookNotificationHeadersHeaderArgs : global::Pulumi.ResourceArgs + { + /// + /// The name of the notification configuration + /// + [Input("name", required: true)] + public Input Name { get; set; } = null!; + + [Input("secretValue")] + private Input? _secretValue; + public Input? SecretValue + { + get => _secretValue; + set + { + var emptySecret = Output.CreateSecret(0); + _secretValue = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + [Input("value")] + public Input? Value { get; set; } + + public WebhookNotificationHeadersHeaderArgs() + { + } + public static new WebhookNotificationHeadersHeaderArgs Empty => new WebhookNotificationHeadersHeaderArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/WebhookNotificationHeadersHeaderGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/WebhookNotificationHeadersHeaderGetArgs.cs new file mode 100644 index 00000000..39eaa585 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/WebhookNotificationHeadersHeaderGetArgs.cs @@ -0,0 +1,42 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class WebhookNotificationHeadersHeaderGetArgs : global::Pulumi.ResourceArgs + { + /// + /// The name of the notification configuration + /// + [Input("name", required: true)] + public Input Name { get; set; } = null!; + + [Input("secretValue")] + private Input? _secretValue; + public Input? SecretValue + { + get => _secretValue; + set + { + var emptySecret = Output.CreateSecret(0); + _secretValue = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + [Input("value")] + public Input? Value { get; set; } + + public WebhookNotificationHeadersHeaderGetArgs() + { + } + public static new WebhookNotificationHeadersHeaderGetArgs Empty => new WebhookNotificationHeadersHeaderGetArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/XmattersNotificationHeadersArgs.cs b/sdk/dotnet/Dynatrace/Inputs/XmattersNotificationHeadersArgs.cs new file mode 100644 index 00000000..31002627 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/XmattersNotificationHeadersArgs.cs @@ -0,0 +1,33 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class XmattersNotificationHeadersArgs : global::Pulumi.ResourceArgs + { + [Input("headers", required: true)] + private InputList? _headers; + + /// + /// An additional HTTP Header to include when sending requests + /// + public InputList Headers + { + get => _headers ?? (_headers = new InputList()); + set => _headers = value; + } + + public XmattersNotificationHeadersArgs() + { + } + public static new XmattersNotificationHeadersArgs Empty => new XmattersNotificationHeadersArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/XmattersNotificationHeadersGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/XmattersNotificationHeadersGetArgs.cs new file mode 100644 index 00000000..e41e4ac2 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/XmattersNotificationHeadersGetArgs.cs @@ -0,0 +1,33 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class XmattersNotificationHeadersGetArgs : global::Pulumi.ResourceArgs + { + [Input("headers", required: true)] + private InputList? _headers; + + /// + /// An additional HTTP Header to include when sending requests + /// + public InputList Headers + { + get => _headers ?? (_headers = new InputList()); + set => _headers = value; + } + + public XmattersNotificationHeadersGetArgs() + { + } + public static new XmattersNotificationHeadersGetArgs Empty => new XmattersNotificationHeadersGetArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/XmattersNotificationHeadersHeaderArgs.cs b/sdk/dotnet/Dynatrace/Inputs/XmattersNotificationHeadersHeaderArgs.cs new file mode 100644 index 00000000..82260579 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/XmattersNotificationHeadersHeaderArgs.cs @@ -0,0 +1,42 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class XmattersNotificationHeadersHeaderArgs : global::Pulumi.ResourceArgs + { + /// + /// The name of the notification configuration + /// + [Input("name", required: true)] + public Input Name { get; set; } = null!; + + [Input("secretValue")] + private Input? _secretValue; + public Input? SecretValue + { + get => _secretValue; + set + { + var emptySecret = Output.CreateSecret(0); + _secretValue = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + [Input("value")] + public Input? Value { get; set; } + + public XmattersNotificationHeadersHeaderArgs() + { + } + public static new XmattersNotificationHeadersHeaderArgs Empty => new XmattersNotificationHeadersHeaderArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/Inputs/XmattersNotificationHeadersHeaderGetArgs.cs b/sdk/dotnet/Dynatrace/Inputs/XmattersNotificationHeadersHeaderGetArgs.cs new file mode 100644 index 00000000..9fc604d8 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Inputs/XmattersNotificationHeadersHeaderGetArgs.cs @@ -0,0 +1,42 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Inputs +{ + + public sealed class XmattersNotificationHeadersHeaderGetArgs : global::Pulumi.ResourceArgs + { + /// + /// The name of the notification configuration + /// + [Input("name", required: true)] + public Input Name { get; set; } = null!; + + [Input("secretValue")] + private Input? _secretValue; + public Input? SecretValue + { + get => _secretValue; + set + { + var emptySecret = Output.CreateSecret(0); + _secretValue = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + [Input("value")] + public Input? Value { get; set; } + + public XmattersNotificationHeadersHeaderGetArgs() + { + } + public static new XmattersNotificationHeadersHeaderGetArgs Empty => new XmattersNotificationHeadersHeaderGetArgs(); + } +} diff --git a/sdk/dotnet/Dynatrace/JiraNotification.cs b/sdk/dotnet/Dynatrace/JiraNotification.cs new file mode 100644 index 00000000..547b88d6 --- /dev/null +++ b/sdk/dotnet/Dynatrace/JiraNotification.cs @@ -0,0 +1,280 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace +{ + [DynatraceResourceType("dynatrace:index/jiraNotification:JiraNotification")] + public partial class JiraNotification : global::Pulumi.CustomResource + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Output("active")] + public Output Active { get; private set; } = null!; + + /// + /// The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + /// + [Output("apiToken")] + public Output ApiToken { get; private set; } = null!; + + /// + /// The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + /// + [Output("description")] + public Output Description { get; private set; } = null!; + + /// + /// The type of the Jira issue to be created by this notification + /// + [Output("issueType")] + public Output IssueType { get; private set; } = null!; + + /// + /// The name of the notification configuration + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// The ID of the associated alerting profile + /// + [Output("profile")] + public Output Profile { get; private set; } = null!; + + /// + /// The project key of the Jira issue to be created by this notification + /// + [Output("projectKey")] + public Output ProjectKey { get; private set; } = null!; + + /// + /// The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Output("summary")] + public Output Summary { get; private set; } = null!; + + /// + /// The URL of the Jira API endpoint + /// + [Output("url")] + public Output Url { get; private set; } = null!; + + /// + /// The username of the Jira profile + /// + [Output("username")] + public Output Username { get; private set; } = null!; + + + /// + /// Create a JiraNotification resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public JiraNotification(string name, JiraNotificationArgs args, CustomResourceOptions? options = null) + : base("dynatrace:index/jiraNotification:JiraNotification", name, args ?? new JiraNotificationArgs(), MakeResourceOptions(options, "")) + { + } + + private JiraNotification(string name, Input id, JiraNotificationState? state = null, CustomResourceOptions? options = null) + : base("dynatrace:index/jiraNotification:JiraNotification", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "github://api.github.com/lbrlabs", + AdditionalSecretOutputs = + { + "apiToken", + }, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing JiraNotification resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static JiraNotification Get(string name, Input id, JiraNotificationState? state = null, CustomResourceOptions? options = null) + { + return new JiraNotification(name, id, state, options); + } + } + + public sealed class JiraNotificationArgs : global::Pulumi.ResourceArgs + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active", required: true)] + public Input Active { get; set; } = null!; + + [Input("apiToken")] + private Input? _apiToken; + + /// + /// The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + /// + public Input? ApiToken + { + get => _apiToken; + set + { + var emptySecret = Output.CreateSecret(0); + _apiToken = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + /// + [Input("description", required: true)] + public Input Description { get; set; } = null!; + + /// + /// The type of the Jira issue to be created by this notification + /// + [Input("issueType", required: true)] + public Input IssueType { get; set; } = null!; + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The ID of the associated alerting profile + /// + [Input("profile", required: true)] + public Input Profile { get; set; } = null!; + + /// + /// The project key of the Jira issue to be created by this notification + /// + [Input("projectKey", required: true)] + public Input ProjectKey { get; set; } = null!; + + /// + /// The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Input("summary", required: true)] + public Input Summary { get; set; } = null!; + + /// + /// The URL of the Jira API endpoint + /// + [Input("url", required: true)] + public Input Url { get; set; } = null!; + + /// + /// The username of the Jira profile + /// + [Input("username", required: true)] + public Input Username { get; set; } = null!; + + public JiraNotificationArgs() + { + } + public static new JiraNotificationArgs Empty => new JiraNotificationArgs(); + } + + public sealed class JiraNotificationState : global::Pulumi.ResourceArgs + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active")] + public Input? Active { get; set; } + + [Input("apiToken")] + private Input? _apiToken; + + /// + /// The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + /// + public Input? ApiToken + { + get => _apiToken; + set + { + var emptySecret = Output.CreateSecret(0); + _apiToken = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// The type of the Jira issue to be created by this notification + /// + [Input("issueType")] + public Input? IssueType { get; set; } + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The ID of the associated alerting profile + /// + [Input("profile")] + public Input? Profile { get; set; } + + /// + /// The project key of the Jira issue to be created by this notification + /// + [Input("projectKey")] + public Input? ProjectKey { get; set; } + + /// + /// The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Input("summary")] + public Input? Summary { get; set; } + + /// + /// The URL of the Jira API endpoint + /// + [Input("url")] + public Input? Url { get; set; } + + /// + /// The username of the Jira profile + /// + [Input("username")] + public Input? Username { get; set; } + + public JiraNotificationState() + { + } + public static new JiraNotificationState Empty => new JiraNotificationState(); + } +} diff --git a/sdk/dotnet/Dynatrace/Maintenance.cs b/sdk/dotnet/Dynatrace/Maintenance.cs new file mode 100644 index 00000000..c7ef51d9 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Maintenance.cs @@ -0,0 +1,160 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace +{ + [DynatraceResourceType("dynatrace:index/maintenance:Maintenance")] + public partial class Maintenance : global::Pulumi.CustomResource + { + /// + /// The maintenance window is enabled or disabled + /// + [Output("enabled")] + public Output Enabled { get; private set; } = null!; + + /// + /// The filters of the maintenance window + /// + [Output("filters")] + public Output> Filters { get; private set; } = null!; + + /// + /// The general properties of the maintenance window + /// + [Output("generalProperties")] + public Output GeneralProperties { get; private set; } = null!; + + /// + /// The schedule of the maintenance window + /// + [Output("schedule")] + public Output Schedule { get; private set; } = null!; + + + /// + /// Create a Maintenance resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public Maintenance(string name, MaintenanceArgs args, CustomResourceOptions? options = null) + : base("dynatrace:index/maintenance:Maintenance", name, args ?? new MaintenanceArgs(), MakeResourceOptions(options, "")) + { + } + + private Maintenance(string name, Input id, MaintenanceState? state = null, CustomResourceOptions? options = null) + : base("dynatrace:index/maintenance:Maintenance", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "github://api.github.com/lbrlabs", + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing Maintenance resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static Maintenance Get(string name, Input id, MaintenanceState? state = null, CustomResourceOptions? options = null) + { + return new Maintenance(name, id, state, options); + } + } + + public sealed class MaintenanceArgs : global::Pulumi.ResourceArgs + { + /// + /// The maintenance window is enabled or disabled + /// + [Input("enabled")] + public Input? Enabled { get; set; } + + [Input("filters")] + private InputList? _filters; + + /// + /// The filters of the maintenance window + /// + public InputList Filters + { + get => _filters ?? (_filters = new InputList()); + set => _filters = value; + } + + /// + /// The general properties of the maintenance window + /// + [Input("generalProperties", required: true)] + public Input GeneralProperties { get; set; } = null!; + + /// + /// The schedule of the maintenance window + /// + [Input("schedule", required: true)] + public Input Schedule { get; set; } = null!; + + public MaintenanceArgs() + { + } + public static new MaintenanceArgs Empty => new MaintenanceArgs(); + } + + public sealed class MaintenanceState : global::Pulumi.ResourceArgs + { + /// + /// The maintenance window is enabled or disabled + /// + [Input("enabled")] + public Input? Enabled { get; set; } + + [Input("filters")] + private InputList? _filters; + + /// + /// The filters of the maintenance window + /// + public InputList Filters + { + get => _filters ?? (_filters = new InputList()); + set => _filters = value; + } + + /// + /// The general properties of the maintenance window + /// + [Input("generalProperties")] + public Input? GeneralProperties { get; set; } + + /// + /// The schedule of the maintenance window + /// + [Input("schedule")] + public Input? Schedule { get; set; } + + public MaintenanceState() + { + } + public static new MaintenanceState Empty => new MaintenanceState(); + } +} diff --git a/sdk/dotnet/Dynatrace/OpsGenieNotification.cs b/sdk/dotnet/Dynatrace/OpsGenieNotification.cs new file mode 100644 index 00000000..4b1799c9 --- /dev/null +++ b/sdk/dotnet/Dynatrace/OpsGenieNotification.cs @@ -0,0 +1,208 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace +{ + [DynatraceResourceType("dynatrace:index/opsGenieNotification:OpsGenieNotification")] + public partial class OpsGenieNotification : global::Pulumi.CustomResource + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Output("active")] + public Output Active { get; private set; } = null!; + + /// + /// The API key to access OpsGenie + /// + [Output("apiKey")] + public Output ApiKey { get; private set; } = null!; + + /// + /// The region domain of the OpsGenie + /// + [Output("domain")] + public Output Domain { get; private set; } = null!; + + /// + /// The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + /// + [Output("message")] + public Output Message { get; private set; } = null!; + + /// + /// The name of the notification configuration + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// The ID of the associated alerting profile + /// + [Output("profile")] + public Output Profile { get; private set; } = null!; + + + /// + /// Create a OpsGenieNotification resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public OpsGenieNotification(string name, OpsGenieNotificationArgs args, CustomResourceOptions? options = null) + : base("dynatrace:index/opsGenieNotification:OpsGenieNotification", name, args ?? new OpsGenieNotificationArgs(), MakeResourceOptions(options, "")) + { + } + + private OpsGenieNotification(string name, Input id, OpsGenieNotificationState? state = null, CustomResourceOptions? options = null) + : base("dynatrace:index/opsGenieNotification:OpsGenieNotification", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "github://api.github.com/lbrlabs", + AdditionalSecretOutputs = + { + "apiKey", + }, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing OpsGenieNotification resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static OpsGenieNotification Get(string name, Input id, OpsGenieNotificationState? state = null, CustomResourceOptions? options = null) + { + return new OpsGenieNotification(name, id, state, options); + } + } + + public sealed class OpsGenieNotificationArgs : global::Pulumi.ResourceArgs + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active", required: true)] + public Input Active { get; set; } = null!; + + [Input("apiKey")] + private Input? _apiKey; + + /// + /// The API key to access OpsGenie + /// + public Input? ApiKey + { + get => _apiKey; + set + { + var emptySecret = Output.CreateSecret(0); + _apiKey = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// The region domain of the OpsGenie + /// + [Input("domain", required: true)] + public Input Domain { get; set; } = null!; + + /// + /// The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + /// + [Input("message", required: true)] + public Input Message { get; set; } = null!; + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The ID of the associated alerting profile + /// + [Input("profile", required: true)] + public Input Profile { get; set; } = null!; + + public OpsGenieNotificationArgs() + { + } + public static new OpsGenieNotificationArgs Empty => new OpsGenieNotificationArgs(); + } + + public sealed class OpsGenieNotificationState : global::Pulumi.ResourceArgs + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active")] + public Input? Active { get; set; } + + [Input("apiKey")] + private Input? _apiKey; + + /// + /// The API key to access OpsGenie + /// + public Input? ApiKey + { + get => _apiKey; + set + { + var emptySecret = Output.CreateSecret(0); + _apiKey = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// The region domain of the OpsGenie + /// + [Input("domain")] + public Input? Domain { get; set; } + + /// + /// The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + /// + [Input("message")] + public Input? Message { get; set; } + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The ID of the associated alerting profile + /// + [Input("profile")] + public Input? Profile { get; set; } + + public OpsGenieNotificationState() + { + } + public static new OpsGenieNotificationState Empty => new OpsGenieNotificationState(); + } +} diff --git a/sdk/dotnet/Dynatrace/Outputs/AutotagEntitySelectorBasedRule.cs b/sdk/dotnet/Dynatrace/Outputs/AutotagEntitySelectorBasedRule.cs index 1b732eac..3bdeb72a 100644 --- a/sdk/dotnet/Dynatrace/Outputs/AutotagEntitySelectorBasedRule.cs +++ b/sdk/dotnet/Dynatrace/Outputs/AutotagEntitySelectorBasedRule.cs @@ -15,6 +15,7 @@ namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs public sealed class AutotagEntitySelectorBasedRule { public readonly bool? Enabled; + public readonly string? Normalization; public readonly string? Selector; public readonly string? Unknowns; public readonly string? ValueFormat; @@ -23,6 +24,8 @@ public sealed class AutotagEntitySelectorBasedRule private AutotagEntitySelectorBasedRule( bool? enabled, + string? normalization, + string? selector, string? unknowns, @@ -30,6 +33,7 @@ private AutotagEntitySelectorBasedRule( string? valueFormat) { Enabled = enabled; + Normalization = normalization; Selector = selector; Unknowns = unknowns; ValueFormat = valueFormat; diff --git a/sdk/dotnet/Dynatrace/Outputs/DashboardDashboardMetadata.cs b/sdk/dotnet/Dynatrace/Outputs/DashboardDashboardMetadata.cs index f84640d7..a36f4a61 100644 --- a/sdk/dotnet/Dynatrace/Outputs/DashboardDashboardMetadata.cs +++ b/sdk/dotnet/Dynatrace/Outputs/DashboardDashboardMetadata.cs @@ -35,6 +35,10 @@ public sealed class DashboardDashboardMetadata /// public readonly string Owner; /// + /// the dashboard is a preset (`true`) or not (`false`). Default is `false`. + /// + public readonly bool? Preset; + /// /// the dashboard is shared (`true`) or private (`false`) /// public readonly bool? Shared; @@ -67,6 +71,8 @@ private DashboardDashboardMetadata( string owner, + bool? preset, + bool? shared, Outputs.DashboardDashboardMetadataSharingDetails? sharingDetails, @@ -82,6 +88,7 @@ private DashboardDashboardMetadata( Filter = filter; Name = name; Owner = owner; + Preset = preset; Shared = shared; SharingDetails = sharingDetails; Tags = tags; diff --git a/sdk/dotnet/Dynatrace/Outputs/MaintenanceFilter.cs b/sdk/dotnet/Dynatrace/Outputs/MaintenanceFilter.cs new file mode 100644 index 00000000..3bc4f826 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Outputs/MaintenanceFilter.cs @@ -0,0 +1,28 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs +{ + + [OutputType] + public sealed class MaintenanceFilter + { + /// + /// A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies + /// + public readonly ImmutableArray Filters; + + [OutputConstructor] + private MaintenanceFilter(ImmutableArray filters) + { + Filters = filters; + } + } +} diff --git a/sdk/dotnet/Dynatrace/Outputs/MaintenanceFilterFilter.cs b/sdk/dotnet/Dynatrace/Outputs/MaintenanceFilterFilter.cs new file mode 100644 index 00000000..2b888202 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Outputs/MaintenanceFilterFilter.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs +{ + + [OutputType] + public sealed class MaintenanceFilterFilter + { + public readonly string? EntityId; + public readonly ImmutableArray EntityTags; + public readonly string? EntityType; + public readonly ImmutableArray ManagementZones; + + [OutputConstructor] + private MaintenanceFilterFilter( + string? entityId, + + ImmutableArray entityTags, + + string? entityType, + + ImmutableArray managementZones) + { + EntityId = entityId; + EntityTags = entityTags; + EntityType = entityType; + ManagementZones = managementZones; + } + } +} diff --git a/sdk/dotnet/Dynatrace/Outputs/MaintenanceGeneralProperties.cs b/sdk/dotnet/Dynatrace/Outputs/MaintenanceGeneralProperties.cs new file mode 100644 index 00000000..aa3be790 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Outputs/MaintenanceGeneralProperties.cs @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs +{ + + [OutputType] + public sealed class MaintenanceGeneralProperties + { + /// + /// A short description of the maintenance purpose + /// + public readonly string? Description; + /// + /// Suppress execution of synthetic monitors during the maintenance + /// + public readonly bool? DisableSynthetic; + /// + /// The name of the maintenance window, displayed in the UI + /// + public readonly string Name; + /// + /// The type of suppression of alerting and problem detection during the maintenance + /// + public readonly string Suppression; + /// + /// The type of the maintenance: planned or unplanned + /// + public readonly string Type; + + [OutputConstructor] + private MaintenanceGeneralProperties( + string? description, + + bool? disableSynthetic, + + string name, + + string suppression, + + string type) + { + Description = description; + DisableSynthetic = disableSynthetic; + Name = name; + Suppression = suppression; + Type = type; + } + } +} diff --git a/sdk/dotnet/Dynatrace/Outputs/MaintenanceSchedule.cs b/sdk/dotnet/Dynatrace/Outputs/MaintenanceSchedule.cs new file mode 100644 index 00000000..1b660adc --- /dev/null +++ b/sdk/dotnet/Dynatrace/Outputs/MaintenanceSchedule.cs @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs +{ + + [OutputType] + public sealed class MaintenanceSchedule + { + /// + /// The configuration for maintenance windows occuring daily + /// + public readonly Outputs.MaintenanceScheduleDailyRecurrence? DailyRecurrence; + /// + /// The configuration for maintenance windows occuring monthly + /// + public readonly Outputs.MaintenanceScheduleMonthlyRecurrence? MonthlyRecurrence; + /// + /// The configuration for maintenance windows occuring once + /// + public readonly Outputs.MaintenanceScheduleOnceRecurrence? OnceRecurrence; + /// + /// The time window of the maintenance window + /// + public readonly string Type; + /// + /// The configuration for maintenance windows occuring weekly + /// + public readonly Outputs.MaintenanceScheduleWeeklyRecurrence? WeeklyRecurrence; + + [OutputConstructor] + private MaintenanceSchedule( + Outputs.MaintenanceScheduleDailyRecurrence? dailyRecurrence, + + Outputs.MaintenanceScheduleMonthlyRecurrence? monthlyRecurrence, + + Outputs.MaintenanceScheduleOnceRecurrence? onceRecurrence, + + string type, + + Outputs.MaintenanceScheduleWeeklyRecurrence? weeklyRecurrence) + { + DailyRecurrence = dailyRecurrence; + MonthlyRecurrence = monthlyRecurrence; + OnceRecurrence = onceRecurrence; + Type = type; + WeeklyRecurrence = weeklyRecurrence; + } + } +} diff --git a/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleDailyRecurrence.cs b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleDailyRecurrence.cs new file mode 100644 index 00000000..473ef307 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleDailyRecurrence.cs @@ -0,0 +1,30 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs +{ + + [OutputType] + public sealed class MaintenanceScheduleDailyRecurrence + { + public readonly Outputs.MaintenanceScheduleDailyRecurrenceRecurrenceRange RecurrenceRange; + public readonly Outputs.MaintenanceScheduleDailyRecurrenceTimeWindow TimeWindow; + + [OutputConstructor] + private MaintenanceScheduleDailyRecurrence( + Outputs.MaintenanceScheduleDailyRecurrenceRecurrenceRange recurrenceRange, + + Outputs.MaintenanceScheduleDailyRecurrenceTimeWindow timeWindow) + { + RecurrenceRange = recurrenceRange; + TimeWindow = timeWindow; + } + } +} diff --git a/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleDailyRecurrenceRecurrenceRange.cs b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleDailyRecurrenceRecurrenceRange.cs new file mode 100644 index 00000000..f2807c3b --- /dev/null +++ b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleDailyRecurrenceRecurrenceRange.cs @@ -0,0 +1,30 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs +{ + + [OutputType] + public sealed class MaintenanceScheduleDailyRecurrenceRecurrenceRange + { + public readonly string EndDate; + public readonly string StartDate; + + [OutputConstructor] + private MaintenanceScheduleDailyRecurrenceRecurrenceRange( + string endDate, + + string startDate) + { + EndDate = endDate; + StartDate = startDate; + } + } +} diff --git a/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleDailyRecurrenceTimeWindow.cs b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleDailyRecurrenceTimeWindow.cs new file mode 100644 index 00000000..bf84e905 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleDailyRecurrenceTimeWindow.cs @@ -0,0 +1,34 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs +{ + + [OutputType] + public sealed class MaintenanceScheduleDailyRecurrenceTimeWindow + { + public readonly string EndTime; + public readonly string StartTime; + public readonly string TimeZone; + + [OutputConstructor] + private MaintenanceScheduleDailyRecurrenceTimeWindow( + string endTime, + + string startTime, + + string timeZone) + { + EndTime = endTime; + StartTime = startTime; + TimeZone = timeZone; + } + } +} diff --git a/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleMonthlyRecurrence.cs b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleMonthlyRecurrence.cs new file mode 100644 index 00000000..07b06ffe --- /dev/null +++ b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleMonthlyRecurrence.cs @@ -0,0 +1,34 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs +{ + + [OutputType] + public sealed class MaintenanceScheduleMonthlyRecurrence + { + public readonly int DayOfMonth; + public readonly Outputs.MaintenanceScheduleMonthlyRecurrenceRecurrenceRange RecurrenceRange; + public readonly Outputs.MaintenanceScheduleMonthlyRecurrenceTimeWindow TimeWindow; + + [OutputConstructor] + private MaintenanceScheduleMonthlyRecurrence( + int dayOfMonth, + + Outputs.MaintenanceScheduleMonthlyRecurrenceRecurrenceRange recurrenceRange, + + Outputs.MaintenanceScheduleMonthlyRecurrenceTimeWindow timeWindow) + { + DayOfMonth = dayOfMonth; + RecurrenceRange = recurrenceRange; + TimeWindow = timeWindow; + } + } +} diff --git a/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRange.cs b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRange.cs new file mode 100644 index 00000000..298a8569 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRange.cs @@ -0,0 +1,30 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs +{ + + [OutputType] + public sealed class MaintenanceScheduleMonthlyRecurrenceRecurrenceRange + { + public readonly string EndDate; + public readonly string StartDate; + + [OutputConstructor] + private MaintenanceScheduleMonthlyRecurrenceRecurrenceRange( + string endDate, + + string startDate) + { + EndDate = endDate; + StartDate = startDate; + } + } +} diff --git a/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleMonthlyRecurrenceTimeWindow.cs b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleMonthlyRecurrenceTimeWindow.cs new file mode 100644 index 00000000..6f33bf13 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleMonthlyRecurrenceTimeWindow.cs @@ -0,0 +1,34 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs +{ + + [OutputType] + public sealed class MaintenanceScheduleMonthlyRecurrenceTimeWindow + { + public readonly string EndTime; + public readonly string StartTime; + public readonly string TimeZone; + + [OutputConstructor] + private MaintenanceScheduleMonthlyRecurrenceTimeWindow( + string endTime, + + string startTime, + + string timeZone) + { + EndTime = endTime; + StartTime = startTime; + TimeZone = timeZone; + } + } +} diff --git a/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleOnceRecurrence.cs b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleOnceRecurrence.cs new file mode 100644 index 00000000..a5b0477a --- /dev/null +++ b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleOnceRecurrence.cs @@ -0,0 +1,34 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs +{ + + [OutputType] + public sealed class MaintenanceScheduleOnceRecurrence + { + public readonly string EndTime; + public readonly string StartTime; + public readonly string TimeZone; + + [OutputConstructor] + private MaintenanceScheduleOnceRecurrence( + string endTime, + + string startTime, + + string timeZone) + { + EndTime = endTime; + StartTime = startTime; + TimeZone = timeZone; + } + } +} diff --git a/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleWeeklyRecurrence.cs b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleWeeklyRecurrence.cs new file mode 100644 index 00000000..3bf07acb --- /dev/null +++ b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleWeeklyRecurrence.cs @@ -0,0 +1,34 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs +{ + + [OutputType] + public sealed class MaintenanceScheduleWeeklyRecurrence + { + public readonly string DayOfWeek; + public readonly Outputs.MaintenanceScheduleWeeklyRecurrenceRecurrenceRange RecurrenceRange; + public readonly Outputs.MaintenanceScheduleWeeklyRecurrenceTimeWindow TimeWindow; + + [OutputConstructor] + private MaintenanceScheduleWeeklyRecurrence( + string dayOfWeek, + + Outputs.MaintenanceScheduleWeeklyRecurrenceRecurrenceRange recurrenceRange, + + Outputs.MaintenanceScheduleWeeklyRecurrenceTimeWindow timeWindow) + { + DayOfWeek = dayOfWeek; + RecurrenceRange = recurrenceRange; + TimeWindow = timeWindow; + } + } +} diff --git a/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRange.cs b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRange.cs new file mode 100644 index 00000000..d3dbb28a --- /dev/null +++ b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRange.cs @@ -0,0 +1,30 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs +{ + + [OutputType] + public sealed class MaintenanceScheduleWeeklyRecurrenceRecurrenceRange + { + public readonly string EndDate; + public readonly string StartDate; + + [OutputConstructor] + private MaintenanceScheduleWeeklyRecurrenceRecurrenceRange( + string endDate, + + string startDate) + { + EndDate = endDate; + StartDate = startDate; + } + } +} diff --git a/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleWeeklyRecurrenceTimeWindow.cs b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleWeeklyRecurrenceTimeWindow.cs new file mode 100644 index 00000000..02375bf4 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Outputs/MaintenanceScheduleWeeklyRecurrenceTimeWindow.cs @@ -0,0 +1,34 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs +{ + + [OutputType] + public sealed class MaintenanceScheduleWeeklyRecurrenceTimeWindow + { + public readonly string EndTime; + public readonly string StartTime; + public readonly string TimeZone; + + [OutputConstructor] + private MaintenanceScheduleWeeklyRecurrenceTimeWindow( + string endTime, + + string startTime, + + string timeZone) + { + EndTime = endTime; + StartTime = startTime; + TimeZone = timeZone; + } + } +} diff --git a/sdk/dotnet/Dynatrace/Outputs/WebhookNotificationHeaders.cs b/sdk/dotnet/Dynatrace/Outputs/WebhookNotificationHeaders.cs new file mode 100644 index 00000000..e6d798db --- /dev/null +++ b/sdk/dotnet/Dynatrace/Outputs/WebhookNotificationHeaders.cs @@ -0,0 +1,28 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs +{ + + [OutputType] + public sealed class WebhookNotificationHeaders + { + /// + /// An additional HTTP Header to include when sending requests + /// + public readonly ImmutableArray Headers; + + [OutputConstructor] + private WebhookNotificationHeaders(ImmutableArray headers) + { + Headers = headers; + } + } +} diff --git a/sdk/dotnet/Dynatrace/Outputs/WebhookNotificationHeadersHeader.cs b/sdk/dotnet/Dynatrace/Outputs/WebhookNotificationHeadersHeader.cs new file mode 100644 index 00000000..59c5b6e5 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Outputs/WebhookNotificationHeadersHeader.cs @@ -0,0 +1,37 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs +{ + + [OutputType] + public sealed class WebhookNotificationHeadersHeader + { + /// + /// The name of the notification configuration + /// + public readonly string Name; + public readonly string? SecretValue; + public readonly string? Value; + + [OutputConstructor] + private WebhookNotificationHeadersHeader( + string name, + + string? secretValue, + + string? value) + { + Name = name; + SecretValue = secretValue; + Value = value; + } + } +} diff --git a/sdk/dotnet/Dynatrace/Outputs/XmattersNotificationHeaders.cs b/sdk/dotnet/Dynatrace/Outputs/XmattersNotificationHeaders.cs new file mode 100644 index 00000000..311a3459 --- /dev/null +++ b/sdk/dotnet/Dynatrace/Outputs/XmattersNotificationHeaders.cs @@ -0,0 +1,28 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs +{ + + [OutputType] + public sealed class XmattersNotificationHeaders + { + /// + /// An additional HTTP Header to include when sending requests + /// + public readonly ImmutableArray Headers; + + [OutputConstructor] + private XmattersNotificationHeaders(ImmutableArray headers) + { + Headers = headers; + } + } +} diff --git a/sdk/dotnet/Dynatrace/Outputs/XmattersNotificationHeadersHeader.cs b/sdk/dotnet/Dynatrace/Outputs/XmattersNotificationHeadersHeader.cs new file mode 100644 index 00000000..009aa0ed --- /dev/null +++ b/sdk/dotnet/Dynatrace/Outputs/XmattersNotificationHeadersHeader.cs @@ -0,0 +1,37 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace.Outputs +{ + + [OutputType] + public sealed class XmattersNotificationHeadersHeader + { + /// + /// The name of the notification configuration + /// + public readonly string Name; + public readonly string? SecretValue; + public readonly string? Value; + + [OutputConstructor] + private XmattersNotificationHeadersHeader( + string name, + + string? secretValue, + + string? value) + { + Name = name; + SecretValue = secretValue; + Value = value; + } + } +} diff --git a/sdk/dotnet/Dynatrace/PagerDutyNotification.cs b/sdk/dotnet/Dynatrace/PagerDutyNotification.cs new file mode 100644 index 00000000..54df248a --- /dev/null +++ b/sdk/dotnet/Dynatrace/PagerDutyNotification.cs @@ -0,0 +1,208 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace +{ + [DynatraceResourceType("dynatrace:index/pagerDutyNotification:PagerDutyNotification")] + public partial class PagerDutyNotification : global::Pulumi.CustomResource + { + /// + /// The name of the PagerDuty account + /// + [Output("account")] + public Output Account { get; private set; } = null!; + + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Output("active")] + public Output Active { get; private set; } = null!; + + /// + /// The API key to access PagerDuty + /// + [Output("apiKey")] + public Output ApiKey { get; private set; } = null!; + + /// + /// The name of the notification configuration + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// The ID of the associated alerting profile + /// + [Output("profile")] + public Output Profile { get; private set; } = null!; + + /// + /// The name of the PagerDuty Service + /// + [Output("service")] + public Output Service { get; private set; } = null!; + + + /// + /// Create a PagerDutyNotification resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public PagerDutyNotification(string name, PagerDutyNotificationArgs args, CustomResourceOptions? options = null) + : base("dynatrace:index/pagerDutyNotification:PagerDutyNotification", name, args ?? new PagerDutyNotificationArgs(), MakeResourceOptions(options, "")) + { + } + + private PagerDutyNotification(string name, Input id, PagerDutyNotificationState? state = null, CustomResourceOptions? options = null) + : base("dynatrace:index/pagerDutyNotification:PagerDutyNotification", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "github://api.github.com/lbrlabs", + AdditionalSecretOutputs = + { + "apiKey", + }, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing PagerDutyNotification resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static PagerDutyNotification Get(string name, Input id, PagerDutyNotificationState? state = null, CustomResourceOptions? options = null) + { + return new PagerDutyNotification(name, id, state, options); + } + } + + public sealed class PagerDutyNotificationArgs : global::Pulumi.ResourceArgs + { + /// + /// The name of the PagerDuty account + /// + [Input("account", required: true)] + public Input Account { get; set; } = null!; + + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active", required: true)] + public Input Active { get; set; } = null!; + + [Input("apiKey")] + private Input? _apiKey; + + /// + /// The API key to access PagerDuty + /// + public Input? ApiKey + { + get => _apiKey; + set + { + var emptySecret = Output.CreateSecret(0); + _apiKey = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The ID of the associated alerting profile + /// + [Input("profile", required: true)] + public Input Profile { get; set; } = null!; + + /// + /// The name of the PagerDuty Service + /// + [Input("service", required: true)] + public Input Service { get; set; } = null!; + + public PagerDutyNotificationArgs() + { + } + public static new PagerDutyNotificationArgs Empty => new PagerDutyNotificationArgs(); + } + + public sealed class PagerDutyNotificationState : global::Pulumi.ResourceArgs + { + /// + /// The name of the PagerDuty account + /// + [Input("account")] + public Input? Account { get; set; } + + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active")] + public Input? Active { get; set; } + + [Input("apiKey")] + private Input? _apiKey; + + /// + /// The API key to access PagerDuty + /// + public Input? ApiKey + { + get => _apiKey; + set + { + var emptySecret = Output.CreateSecret(0); + _apiKey = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The ID of the associated alerting profile + /// + [Input("profile")] + public Input? Profile { get; set; } + + /// + /// The name of the PagerDuty Service + /// + [Input("service")] + public Input? Service { get; set; } + + public PagerDutyNotificationState() + { + } + public static new PagerDutyNotificationState Empty => new PagerDutyNotificationState(); + } +} diff --git a/sdk/dotnet/Dynatrace/ServiceNowNotification.cs b/sdk/dotnet/Dynatrace/ServiceNowNotification.cs new file mode 100644 index 00000000..1cc4ebe2 --- /dev/null +++ b/sdk/dotnet/Dynatrace/ServiceNowNotification.cs @@ -0,0 +1,280 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace +{ + [DynatraceResourceType("dynatrace:index/serviceNowNotification:ServiceNowNotification")] + public partial class ServiceNowNotification : global::Pulumi.CustomResource + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Output("active")] + public Output Active { get; private set; } = null!; + + /// + /// Send events into ServiceNow ITOM + /// + [Output("events")] + public Output Events { get; private set; } = null!; + + /// + /// Send incidents into ServiceNow ITSM + /// + [Output("incidents")] + public Output Incidents { get; private set; } = null!; + + /// + /// The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + /// + [Output("instance")] + public Output Instance { get; private set; } = null!; + + /// + /// The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Output("message")] + public Output Message { get; private set; } = null!; + + /// + /// The name of the notification configuration + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// The password to the ServiceNow account + /// + [Output("password")] + public Output Password { get; private set; } = null!; + + /// + /// The ID of the associated alerting profile + /// + [Output("profile")] + public Output Profile { get; private set; } = null!; + + /// + /// The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + /// + [Output("url")] + public Output Url { get; private set; } = null!; + + /// + /// The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + /// + [Output("username")] + public Output Username { get; private set; } = null!; + + + /// + /// Create a ServiceNowNotification resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public ServiceNowNotification(string name, ServiceNowNotificationArgs args, CustomResourceOptions? options = null) + : base("dynatrace:index/serviceNowNotification:ServiceNowNotification", name, args ?? new ServiceNowNotificationArgs(), MakeResourceOptions(options, "")) + { + } + + private ServiceNowNotification(string name, Input id, ServiceNowNotificationState? state = null, CustomResourceOptions? options = null) + : base("dynatrace:index/serviceNowNotification:ServiceNowNotification", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "github://api.github.com/lbrlabs", + AdditionalSecretOutputs = + { + "password", + }, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing ServiceNowNotification resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static ServiceNowNotification Get(string name, Input id, ServiceNowNotificationState? state = null, CustomResourceOptions? options = null) + { + return new ServiceNowNotification(name, id, state, options); + } + } + + public sealed class ServiceNowNotificationArgs : global::Pulumi.ResourceArgs + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active", required: true)] + public Input Active { get; set; } = null!; + + /// + /// Send events into ServiceNow ITOM + /// + [Input("events")] + public Input? Events { get; set; } + + /// + /// Send incidents into ServiceNow ITSM + /// + [Input("incidents", required: true)] + public Input Incidents { get; set; } = null!; + + /// + /// The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + /// + [Input("instance")] + public Input? Instance { get; set; } + + /// + /// The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Input("message", required: true)] + public Input Message { get; set; } = null!; + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + [Input("password")] + private Input? _password; + + /// + /// The password to the ServiceNow account + /// + public Input? Password + { + get => _password; + set + { + var emptySecret = Output.CreateSecret(0); + _password = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// The ID of the associated alerting profile + /// + [Input("profile", required: true)] + public Input Profile { get; set; } = null!; + + /// + /// The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + /// + [Input("url")] + public Input? Url { get; set; } + + /// + /// The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + /// + [Input("username", required: true)] + public Input Username { get; set; } = null!; + + public ServiceNowNotificationArgs() + { + } + public static new ServiceNowNotificationArgs Empty => new ServiceNowNotificationArgs(); + } + + public sealed class ServiceNowNotificationState : global::Pulumi.ResourceArgs + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active")] + public Input? Active { get; set; } + + /// + /// Send events into ServiceNow ITOM + /// + [Input("events")] + public Input? Events { get; set; } + + /// + /// Send incidents into ServiceNow ITSM + /// + [Input("incidents")] + public Input? Incidents { get; set; } + + /// + /// The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + /// + [Input("instance")] + public Input? Instance { get; set; } + + /// + /// The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Input("message")] + public Input? Message { get; set; } + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + [Input("password")] + private Input? _password; + + /// + /// The password to the ServiceNow account + /// + public Input? Password + { + get => _password; + set + { + var emptySecret = Output.CreateSecret(0); + _password = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// The ID of the associated alerting profile + /// + [Input("profile")] + public Input? Profile { get; set; } + + /// + /// The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + /// + [Input("url")] + public Input? Url { get; set; } + + /// + /// The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + /// + [Input("username")] + public Input? Username { get; set; } + + public ServiceNowNotificationState() + { + } + public static new ServiceNowNotificationState Empty => new ServiceNowNotificationState(); + } +} diff --git a/sdk/dotnet/Dynatrace/SlackNotification.cs b/sdk/dotnet/Dynatrace/SlackNotification.cs new file mode 100644 index 00000000..9447395b --- /dev/null +++ b/sdk/dotnet/Dynatrace/SlackNotification.cs @@ -0,0 +1,208 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace +{ + [DynatraceResourceType("dynatrace:index/slackNotification:SlackNotification")] + public partial class SlackNotification : global::Pulumi.CustomResource + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Output("active")] + public Output Active { get; private set; } = null!; + + /// + /// The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + /// + [Output("channel")] + public Output Channel { get; private set; } = null!; + + /// + /// The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Output("message")] + public Output Message { get; private set; } = null!; + + /// + /// The name of the notification configuration + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// The ID of the associated alerting profile + /// + [Output("profile")] + public Output Profile { get; private set; } = null!; + + /// + /// The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + /// + [Output("url")] + public Output Url { get; private set; } = null!; + + + /// + /// Create a SlackNotification resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public SlackNotification(string name, SlackNotificationArgs args, CustomResourceOptions? options = null) + : base("dynatrace:index/slackNotification:SlackNotification", name, args ?? new SlackNotificationArgs(), MakeResourceOptions(options, "")) + { + } + + private SlackNotification(string name, Input id, SlackNotificationState? state = null, CustomResourceOptions? options = null) + : base("dynatrace:index/slackNotification:SlackNotification", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "github://api.github.com/lbrlabs", + AdditionalSecretOutputs = + { + "url", + }, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing SlackNotification resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static SlackNotification Get(string name, Input id, SlackNotificationState? state = null, CustomResourceOptions? options = null) + { + return new SlackNotification(name, id, state, options); + } + } + + public sealed class SlackNotificationArgs : global::Pulumi.ResourceArgs + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active", required: true)] + public Input Active { get; set; } = null!; + + /// + /// The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + /// + [Input("channel", required: true)] + public Input Channel { get; set; } = null!; + + /// + /// The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Input("message", required: true)] + public Input Message { get; set; } = null!; + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The ID of the associated alerting profile + /// + [Input("profile", required: true)] + public Input Profile { get; set; } = null!; + + [Input("url", required: true)] + private Input? _url; + + /// + /// The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + /// + public Input? Url + { + get => _url; + set + { + var emptySecret = Output.CreateSecret(0); + _url = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + public SlackNotificationArgs() + { + } + public static new SlackNotificationArgs Empty => new SlackNotificationArgs(); + } + + public sealed class SlackNotificationState : global::Pulumi.ResourceArgs + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active")] + public Input? Active { get; set; } + + /// + /// The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + /// + [Input("channel")] + public Input? Channel { get; set; } + + /// + /// The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Input("message")] + public Input? Message { get; set; } + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The ID of the associated alerting profile + /// + [Input("profile")] + public Input? Profile { get; set; } + + [Input("url")] + private Input? _url; + + /// + /// The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + /// + public Input? Url + { + get => _url; + set + { + var emptySecret = Output.CreateSecret(0); + _url = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + public SlackNotificationState() + { + } + public static new SlackNotificationState Empty => new SlackNotificationState(); + } +} diff --git a/sdk/dotnet/Dynatrace/TrrelloNotification.cs b/sdk/dotnet/Dynatrace/TrrelloNotification.cs new file mode 100644 index 00000000..ed5932ba --- /dev/null +++ b/sdk/dotnet/Dynatrace/TrrelloNotification.cs @@ -0,0 +1,256 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace +{ + [DynatraceResourceType("dynatrace:index/trrelloNotification:TrrelloNotification")] + public partial class TrrelloNotification : global::Pulumi.CustomResource + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Output("active")] + public Output Active { get; private set; } = null!; + + /// + /// The application key for the Trello account + /// + [Output("applicationKey")] + public Output ApplicationKey { get; private set; } = null!; + + /// + /// The application token for the Trello account + /// + [Output("authorizationToken")] + public Output AuthorizationToken { get; private set; } = null!; + + /// + /// The Trello board to which the card should be assigned + /// + [Output("boardId")] + public Output BoardId { get; private set; } = null!; + + /// + /// The description of the Trello card. You can use same placeholders as in card text + /// + [Output("description")] + public Output Description { get; private set; } = null!; + + /// + /// The Trello list to which the card should be assigned + /// + [Output("listId")] + public Output ListId { get; private set; } = null!; + + /// + /// The name of the notification configuration + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// The ID of the associated alerting profile + /// + [Output("profile")] + public Output Profile { get; private set; } = null!; + + /// + /// The Trello list to which the card of the resolved problem should be assigned + /// + [Output("resolvedListId")] + public Output ResolvedListId { get; private set; } = null!; + + /// + /// The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Output("text")] + public Output Text { get; private set; } = null!; + + + /// + /// Create a TrrelloNotification resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public TrrelloNotification(string name, TrrelloNotificationArgs args, CustomResourceOptions? options = null) + : base("dynatrace:index/trrelloNotification:TrrelloNotification", name, args ?? new TrrelloNotificationArgs(), MakeResourceOptions(options, "")) + { + } + + private TrrelloNotification(string name, Input id, TrrelloNotificationState? state = null, CustomResourceOptions? options = null) + : base("dynatrace:index/trrelloNotification:TrrelloNotification", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "github://api.github.com/lbrlabs", + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing TrrelloNotification resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static TrrelloNotification Get(string name, Input id, TrrelloNotificationState? state = null, CustomResourceOptions? options = null) + { + return new TrrelloNotification(name, id, state, options); + } + } + + public sealed class TrrelloNotificationArgs : global::Pulumi.ResourceArgs + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active", required: true)] + public Input Active { get; set; } = null!; + + /// + /// The application key for the Trello account + /// + [Input("applicationKey", required: true)] + public Input ApplicationKey { get; set; } = null!; + + /// + /// The application token for the Trello account + /// + [Input("authorizationToken")] + public Input? AuthorizationToken { get; set; } + + /// + /// The Trello board to which the card should be assigned + /// + [Input("boardId", required: true)] + public Input BoardId { get; set; } = null!; + + /// + /// The description of the Trello card. You can use same placeholders as in card text + /// + [Input("description", required: true)] + public Input Description { get; set; } = null!; + + /// + /// The Trello list to which the card should be assigned + /// + [Input("listId", required: true)] + public Input ListId { get; set; } = null!; + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The ID of the associated alerting profile + /// + [Input("profile", required: true)] + public Input Profile { get; set; } = null!; + + /// + /// The Trello list to which the card of the resolved problem should be assigned + /// + [Input("resolvedListId", required: true)] + public Input ResolvedListId { get; set; } = null!; + + /// + /// The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Input("text", required: true)] + public Input Text { get; set; } = null!; + + public TrrelloNotificationArgs() + { + } + public static new TrrelloNotificationArgs Empty => new TrrelloNotificationArgs(); + } + + public sealed class TrrelloNotificationState : global::Pulumi.ResourceArgs + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active")] + public Input? Active { get; set; } + + /// + /// The application key for the Trello account + /// + [Input("applicationKey")] + public Input? ApplicationKey { get; set; } + + /// + /// The application token for the Trello account + /// + [Input("authorizationToken")] + public Input? AuthorizationToken { get; set; } + + /// + /// The Trello board to which the card should be assigned + /// + [Input("boardId")] + public Input? BoardId { get; set; } + + /// + /// The description of the Trello card. You can use same placeholders as in card text + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// The Trello list to which the card should be assigned + /// + [Input("listId")] + public Input? ListId { get; set; } + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The ID of the associated alerting profile + /// + [Input("profile")] + public Input? Profile { get; set; } + + /// + /// The Trello list to which the card of the resolved problem should be assigned + /// + [Input("resolvedListId")] + public Input? ResolvedListId { get; set; } + + /// + /// The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Input("text")] + public Input? Text { get; set; } + + public TrrelloNotificationState() + { + } + public static new TrrelloNotificationState Empty => new TrrelloNotificationState(); + } +} diff --git a/sdk/dotnet/Dynatrace/VictorOpsNotification.cs b/sdk/dotnet/Dynatrace/VictorOpsNotification.cs new file mode 100644 index 00000000..7be16969 --- /dev/null +++ b/sdk/dotnet/Dynatrace/VictorOpsNotification.cs @@ -0,0 +1,208 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace +{ + [DynatraceResourceType("dynatrace:index/victorOpsNotification:VictorOpsNotification")] + public partial class VictorOpsNotification : global::Pulumi.CustomResource + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Output("active")] + public Output Active { get; private set; } = null!; + + /// + /// The API key for the target VictorOps account + /// + [Output("apiKey")] + public Output ApiKey { get; private set; } = null!; + + /// + /// The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + /// + [Output("message")] + public Output Message { get; private set; } = null!; + + /// + /// The name of the notification configuration + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// The ID of the associated alerting profile + /// + [Output("profile")] + public Output Profile { get; private set; } = null!; + + /// + /// The routing key, defining the group to be notified + /// + [Output("routingKey")] + public Output RoutingKey { get; private set; } = null!; + + + /// + /// Create a VictorOpsNotification resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public VictorOpsNotification(string name, VictorOpsNotificationArgs args, CustomResourceOptions? options = null) + : base("dynatrace:index/victorOpsNotification:VictorOpsNotification", name, args ?? new VictorOpsNotificationArgs(), MakeResourceOptions(options, "")) + { + } + + private VictorOpsNotification(string name, Input id, VictorOpsNotificationState? state = null, CustomResourceOptions? options = null) + : base("dynatrace:index/victorOpsNotification:VictorOpsNotification", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "github://api.github.com/lbrlabs", + AdditionalSecretOutputs = + { + "apiKey", + }, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing VictorOpsNotification resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static VictorOpsNotification Get(string name, Input id, VictorOpsNotificationState? state = null, CustomResourceOptions? options = null) + { + return new VictorOpsNotification(name, id, state, options); + } + } + + public sealed class VictorOpsNotificationArgs : global::Pulumi.ResourceArgs + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active", required: true)] + public Input Active { get; set; } = null!; + + [Input("apiKey")] + private Input? _apiKey; + + /// + /// The API key for the target VictorOps account + /// + public Input? ApiKey + { + get => _apiKey; + set + { + var emptySecret = Output.CreateSecret(0); + _apiKey = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + /// + [Input("message", required: true)] + public Input Message { get; set; } = null!; + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The ID of the associated alerting profile + /// + [Input("profile", required: true)] + public Input Profile { get; set; } = null!; + + /// + /// The routing key, defining the group to be notified + /// + [Input("routingKey", required: true)] + public Input RoutingKey { get; set; } = null!; + + public VictorOpsNotificationArgs() + { + } + public static new VictorOpsNotificationArgs Empty => new VictorOpsNotificationArgs(); + } + + public sealed class VictorOpsNotificationState : global::Pulumi.ResourceArgs + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active")] + public Input? Active { get; set; } + + [Input("apiKey")] + private Input? _apiKey; + + /// + /// The API key for the target VictorOps account + /// + public Input? ApiKey + { + get => _apiKey; + set + { + var emptySecret = Output.CreateSecret(0); + _apiKey = Output.Tuple?, int>(value, emptySecret).Apply(t => t.Item1); + } + } + + /// + /// The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + /// + [Input("message")] + public Input? Message { get; set; } + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The ID of the associated alerting profile + /// + [Input("profile")] + public Input? Profile { get; set; } + + /// + /// The routing key, defining the group to be notified + /// + [Input("routingKey")] + public Input? RoutingKey { get; set; } + + public VictorOpsNotificationState() + { + } + public static new VictorOpsNotificationState Empty => new VictorOpsNotificationState(); + } +} diff --git a/sdk/dotnet/Dynatrace/WebhookNotification.cs b/sdk/dotnet/Dynatrace/WebhookNotification.cs new file mode 100644 index 00000000..4b5166b1 --- /dev/null +++ b/sdk/dotnet/Dynatrace/WebhookNotification.cs @@ -0,0 +1,238 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace +{ + [DynatraceResourceType("dynatrace:index/webhookNotification:WebhookNotification")] + public partial class WebhookNotification : global::Pulumi.CustomResource + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Output("active")] + public Output Active { get; private set; } = null!; + + /// + /// A list of the additional HTTP headers + /// + [Output("headers")] + public Output Headers { get; private set; } = null!; + + /// + /// Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + /// + [Output("insecure")] + public Output Insecure { get; private set; } = null!; + + /// + /// The name of the notification configuration + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// Send email if problem is closed + /// + [Output("notifyClosedProblems")] + public Output NotifyClosedProblems { get; private set; } = null!; + + /// + /// Call webhook if new events merge into existing problems + /// + [Output("notifyEventMerges")] + public Output NotifyEventMerges { get; private set; } = null!; + + /// + /// The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Output("payload")] + public Output Payload { get; private set; } = null!; + + /// + /// The ID of the associated alerting profile + /// + [Output("profile")] + public Output Profile { get; private set; } = null!; + + /// + /// The URL of the WebHook endpoint + /// + [Output("url")] + public Output Url { get; private set; } = null!; + + + /// + /// Create a WebhookNotification resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public WebhookNotification(string name, WebhookNotificationArgs args, CustomResourceOptions? options = null) + : base("dynatrace:index/webhookNotification:WebhookNotification", name, args ?? new WebhookNotificationArgs(), MakeResourceOptions(options, "")) + { + } + + private WebhookNotification(string name, Input id, WebhookNotificationState? state = null, CustomResourceOptions? options = null) + : base("dynatrace:index/webhookNotification:WebhookNotification", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "github://api.github.com/lbrlabs", + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing WebhookNotification resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static WebhookNotification Get(string name, Input id, WebhookNotificationState? state = null, CustomResourceOptions? options = null) + { + return new WebhookNotification(name, id, state, options); + } + } + + public sealed class WebhookNotificationArgs : global::Pulumi.ResourceArgs + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active", required: true)] + public Input Active { get; set; } = null!; + + /// + /// A list of the additional HTTP headers + /// + [Input("headers")] + public Input? Headers { get; set; } + + /// + /// Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + /// + [Input("insecure")] + public Input? Insecure { get; set; } + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// Send email if problem is closed + /// + [Input("notifyClosedProblems")] + public Input? NotifyClosedProblems { get; set; } + + /// + /// Call webhook if new events merge into existing problems + /// + [Input("notifyEventMerges")] + public Input? NotifyEventMerges { get; set; } + + /// + /// The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Input("payload", required: true)] + public Input Payload { get; set; } = null!; + + /// + /// The ID of the associated alerting profile + /// + [Input("profile", required: true)] + public Input Profile { get; set; } = null!; + + /// + /// The URL of the WebHook endpoint + /// + [Input("url", required: true)] + public Input Url { get; set; } = null!; + + public WebhookNotificationArgs() + { + } + public static new WebhookNotificationArgs Empty => new WebhookNotificationArgs(); + } + + public sealed class WebhookNotificationState : global::Pulumi.ResourceArgs + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active")] + public Input? Active { get; set; } + + /// + /// A list of the additional HTTP headers + /// + [Input("headers")] + public Input? Headers { get; set; } + + /// + /// Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + /// + [Input("insecure")] + public Input? Insecure { get; set; } + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// Send email if problem is closed + /// + [Input("notifyClosedProblems")] + public Input? NotifyClosedProblems { get; set; } + + /// + /// Call webhook if new events merge into existing problems + /// + [Input("notifyEventMerges")] + public Input? NotifyEventMerges { get; set; } + + /// + /// The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Input("payload")] + public Input? Payload { get; set; } + + /// + /// The ID of the associated alerting profile + /// + [Input("profile")] + public Input? Profile { get; set; } + + /// + /// The URL of the WebHook endpoint + /// + [Input("url")] + public Input? Url { get; set; } + + public WebhookNotificationState() + { + } + public static new WebhookNotificationState Empty => new WebhookNotificationState(); + } +} diff --git a/sdk/dotnet/Dynatrace/XmattersNotification.cs b/sdk/dotnet/Dynatrace/XmattersNotification.cs new file mode 100644 index 00000000..9e1be9f1 --- /dev/null +++ b/sdk/dotnet/Dynatrace/XmattersNotification.cs @@ -0,0 +1,202 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; +using Pulumi; + +namespace Lbrlabs.PulumiPackage.Dynatrace +{ + [DynatraceResourceType("dynatrace:index/xmattersNotification:XmattersNotification")] + public partial class XmattersNotification : global::Pulumi.CustomResource + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Output("active")] + public Output Active { get; private set; } = null!; + + /// + /// A list of the additional HTTP headers + /// + [Output("headers")] + public Output Headers { get; private set; } = null!; + + /// + /// Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + /// + [Output("insecure")] + public Output Insecure { get; private set; } = null!; + + /// + /// The name of the notification configuration + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Output("payload")] + public Output Payload { get; private set; } = null!; + + /// + /// The ID of the associated alerting profile + /// + [Output("profile")] + public Output Profile { get; private set; } = null!; + + /// + /// The URL of the WebHook endpoint + /// + [Output("url")] + public Output Url { get; private set; } = null!; + + + /// + /// Create a XmattersNotification resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public XmattersNotification(string name, XmattersNotificationArgs args, CustomResourceOptions? options = null) + : base("dynatrace:index/xmattersNotification:XmattersNotification", name, args ?? new XmattersNotificationArgs(), MakeResourceOptions(options, "")) + { + } + + private XmattersNotification(string name, Input id, XmattersNotificationState? state = null, CustomResourceOptions? options = null) + : base("dynatrace:index/xmattersNotification:XmattersNotification", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + PluginDownloadURL = "github://api.github.com/lbrlabs", + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing XmattersNotification resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static XmattersNotification Get(string name, Input id, XmattersNotificationState? state = null, CustomResourceOptions? options = null) + { + return new XmattersNotification(name, id, state, options); + } + } + + public sealed class XmattersNotificationArgs : global::Pulumi.ResourceArgs + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active", required: true)] + public Input Active { get; set; } = null!; + + /// + /// A list of the additional HTTP headers + /// + [Input("headers")] + public Input? Headers { get; set; } + + /// + /// Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + /// + [Input("insecure")] + public Input? Insecure { get; set; } + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Input("payload", required: true)] + public Input Payload { get; set; } = null!; + + /// + /// The ID of the associated alerting profile + /// + [Input("profile", required: true)] + public Input Profile { get; set; } = null!; + + /// + /// The URL of the WebHook endpoint + /// + [Input("url", required: true)] + public Input Url { get; set; } = null!; + + public XmattersNotificationArgs() + { + } + public static new XmattersNotificationArgs Empty => new XmattersNotificationArgs(); + } + + public sealed class XmattersNotificationState : global::Pulumi.ResourceArgs + { + /// + /// The configuration is enabled (`true`) or disabled (`false`) + /// + [Input("active")] + public Input? Active { get; set; } + + /// + /// A list of the additional HTTP headers + /// + [Input("headers")] + public Input? Headers { get; set; } + + /// + /// Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + /// + [Input("insecure")] + public Input? Insecure { get; set; } + + /// + /// The name of the notification configuration + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + /// + [Input("payload")] + public Input? Payload { get; set; } + + /// + /// The ID of the associated alerting profile + /// + [Input("profile")] + public Input? Profile { get; set; } + + /// + /// The URL of the WebHook endpoint + /// + [Input("url")] + public Input? Url { get; set; } + + public XmattersNotificationState() + { + } + public static new XmattersNotificationState Empty => new XmattersNotificationState(); + } +} diff --git a/sdk/go/dynatrace/ansibleTowerNotification.go b/sdk/go/dynatrace/ansibleTowerNotification.go new file mode 100644 index 00000000..4b19d89d --- /dev/null +++ b/sdk/go/dynatrace/ansibleTowerNotification.go @@ -0,0 +1,338 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dynatrace + +import ( + "context" + "reflect" + + "github.com/pkg/errors" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type AnsibleTowerNotification struct { + pulumi.CustomResourceState + + // The notification is active (`true`) or inactive (`false`). Default is `false`. + Active pulumi.BoolPtrOutput `pulumi:"active"` + // The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + CustomMessage pulumi.StringOutput `pulumi:"customMessage"` + // Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + Insecure pulumi.BoolPtrOutput `pulumi:"insecure"` + // The URL of the target Ansible Tower job template + JobTemplateUrl pulumi.StringOutput `pulumi:"jobTemplateUrl"` + // The display name within the Dynatrace WebUI. + Name pulumi.StringOutput `pulumi:"name"` + // The password for the Ansible Tower account + Password pulumi.StringPtrOutput `pulumi:"password"` + // The ID of the associated alerting profile. + Profile pulumi.StringOutput `pulumi:"profile"` + // The username of the Ansible Tower account + Username pulumi.StringOutput `pulumi:"username"` +} + +// NewAnsibleTowerNotification registers a new resource with the given unique name, arguments, and options. +func NewAnsibleTowerNotification(ctx *pulumi.Context, + name string, args *AnsibleTowerNotificationArgs, opts ...pulumi.ResourceOption) (*AnsibleTowerNotification, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.CustomMessage == nil { + return nil, errors.New("invalid value for required argument 'CustomMessage'") + } + if args.JobTemplateUrl == nil { + return nil, errors.New("invalid value for required argument 'JobTemplateUrl'") + } + if args.Profile == nil { + return nil, errors.New("invalid value for required argument 'Profile'") + } + if args.Username == nil { + return nil, errors.New("invalid value for required argument 'Username'") + } + if args.Password != nil { + args.Password = pulumi.ToSecret(args.Password).(pulumi.StringPtrOutput) + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "password", + }) + opts = append(opts, secrets) + opts = pkgResourceDefaultOpts(opts) + var resource AnsibleTowerNotification + err := ctx.RegisterResource("dynatrace:index/ansibleTowerNotification:AnsibleTowerNotification", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetAnsibleTowerNotification gets an existing AnsibleTowerNotification resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetAnsibleTowerNotification(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *AnsibleTowerNotificationState, opts ...pulumi.ResourceOption) (*AnsibleTowerNotification, error) { + var resource AnsibleTowerNotification + err := ctx.ReadResource("dynatrace:index/ansibleTowerNotification:AnsibleTowerNotification", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering AnsibleTowerNotification resources. +type ansibleTowerNotificationState struct { + // The notification is active (`true`) or inactive (`false`). Default is `false`. + Active *bool `pulumi:"active"` + // The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + CustomMessage *string `pulumi:"customMessage"` + // Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + Insecure *bool `pulumi:"insecure"` + // The URL of the target Ansible Tower job template + JobTemplateUrl *string `pulumi:"jobTemplateUrl"` + // The display name within the Dynatrace WebUI. + Name *string `pulumi:"name"` + // The password for the Ansible Tower account + Password *string `pulumi:"password"` + // The ID of the associated alerting profile. + Profile *string `pulumi:"profile"` + // The username of the Ansible Tower account + Username *string `pulumi:"username"` +} + +type AnsibleTowerNotificationState struct { + // The notification is active (`true`) or inactive (`false`). Default is `false`. + Active pulumi.BoolPtrInput + // The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + CustomMessage pulumi.StringPtrInput + // Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + Insecure pulumi.BoolPtrInput + // The URL of the target Ansible Tower job template + JobTemplateUrl pulumi.StringPtrInput + // The display name within the Dynatrace WebUI. + Name pulumi.StringPtrInput + // The password for the Ansible Tower account + Password pulumi.StringPtrInput + // The ID of the associated alerting profile. + Profile pulumi.StringPtrInput + // The username of the Ansible Tower account + Username pulumi.StringPtrInput +} + +func (AnsibleTowerNotificationState) ElementType() reflect.Type { + return reflect.TypeOf((*ansibleTowerNotificationState)(nil)).Elem() +} + +type ansibleTowerNotificationArgs struct { + // The notification is active (`true`) or inactive (`false`). Default is `false`. + Active *bool `pulumi:"active"` + // The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + CustomMessage string `pulumi:"customMessage"` + // Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + Insecure *bool `pulumi:"insecure"` + // The URL of the target Ansible Tower job template + JobTemplateUrl string `pulumi:"jobTemplateUrl"` + // The display name within the Dynatrace WebUI. + Name *string `pulumi:"name"` + // The password for the Ansible Tower account + Password *string `pulumi:"password"` + // The ID of the associated alerting profile. + Profile string `pulumi:"profile"` + // The username of the Ansible Tower account + Username string `pulumi:"username"` +} + +// The set of arguments for constructing a AnsibleTowerNotification resource. +type AnsibleTowerNotificationArgs struct { + // The notification is active (`true`) or inactive (`false`). Default is `false`. + Active pulumi.BoolPtrInput + // The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + CustomMessage pulumi.StringInput + // Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + Insecure pulumi.BoolPtrInput + // The URL of the target Ansible Tower job template + JobTemplateUrl pulumi.StringInput + // The display name within the Dynatrace WebUI. + Name pulumi.StringPtrInput + // The password for the Ansible Tower account + Password pulumi.StringPtrInput + // The ID of the associated alerting profile. + Profile pulumi.StringInput + // The username of the Ansible Tower account + Username pulumi.StringInput +} + +func (AnsibleTowerNotificationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ansibleTowerNotificationArgs)(nil)).Elem() +} + +type AnsibleTowerNotificationInput interface { + pulumi.Input + + ToAnsibleTowerNotificationOutput() AnsibleTowerNotificationOutput + ToAnsibleTowerNotificationOutputWithContext(ctx context.Context) AnsibleTowerNotificationOutput +} + +func (*AnsibleTowerNotification) ElementType() reflect.Type { + return reflect.TypeOf((**AnsibleTowerNotification)(nil)).Elem() +} + +func (i *AnsibleTowerNotification) ToAnsibleTowerNotificationOutput() AnsibleTowerNotificationOutput { + return i.ToAnsibleTowerNotificationOutputWithContext(context.Background()) +} + +func (i *AnsibleTowerNotification) ToAnsibleTowerNotificationOutputWithContext(ctx context.Context) AnsibleTowerNotificationOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnsibleTowerNotificationOutput) +} + +// AnsibleTowerNotificationArrayInput is an input type that accepts AnsibleTowerNotificationArray and AnsibleTowerNotificationArrayOutput values. +// You can construct a concrete instance of `AnsibleTowerNotificationArrayInput` via: +// +// AnsibleTowerNotificationArray{ AnsibleTowerNotificationArgs{...} } +type AnsibleTowerNotificationArrayInput interface { + pulumi.Input + + ToAnsibleTowerNotificationArrayOutput() AnsibleTowerNotificationArrayOutput + ToAnsibleTowerNotificationArrayOutputWithContext(context.Context) AnsibleTowerNotificationArrayOutput +} + +type AnsibleTowerNotificationArray []AnsibleTowerNotificationInput + +func (AnsibleTowerNotificationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*AnsibleTowerNotification)(nil)).Elem() +} + +func (i AnsibleTowerNotificationArray) ToAnsibleTowerNotificationArrayOutput() AnsibleTowerNotificationArrayOutput { + return i.ToAnsibleTowerNotificationArrayOutputWithContext(context.Background()) +} + +func (i AnsibleTowerNotificationArray) ToAnsibleTowerNotificationArrayOutputWithContext(ctx context.Context) AnsibleTowerNotificationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnsibleTowerNotificationArrayOutput) +} + +// AnsibleTowerNotificationMapInput is an input type that accepts AnsibleTowerNotificationMap and AnsibleTowerNotificationMapOutput values. +// You can construct a concrete instance of `AnsibleTowerNotificationMapInput` via: +// +// AnsibleTowerNotificationMap{ "key": AnsibleTowerNotificationArgs{...} } +type AnsibleTowerNotificationMapInput interface { + pulumi.Input + + ToAnsibleTowerNotificationMapOutput() AnsibleTowerNotificationMapOutput + ToAnsibleTowerNotificationMapOutputWithContext(context.Context) AnsibleTowerNotificationMapOutput +} + +type AnsibleTowerNotificationMap map[string]AnsibleTowerNotificationInput + +func (AnsibleTowerNotificationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*AnsibleTowerNotification)(nil)).Elem() +} + +func (i AnsibleTowerNotificationMap) ToAnsibleTowerNotificationMapOutput() AnsibleTowerNotificationMapOutput { + return i.ToAnsibleTowerNotificationMapOutputWithContext(context.Background()) +} + +func (i AnsibleTowerNotificationMap) ToAnsibleTowerNotificationMapOutputWithContext(ctx context.Context) AnsibleTowerNotificationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnsibleTowerNotificationMapOutput) +} + +type AnsibleTowerNotificationOutput struct{ *pulumi.OutputState } + +func (AnsibleTowerNotificationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AnsibleTowerNotification)(nil)).Elem() +} + +func (o AnsibleTowerNotificationOutput) ToAnsibleTowerNotificationOutput() AnsibleTowerNotificationOutput { + return o +} + +func (o AnsibleTowerNotificationOutput) ToAnsibleTowerNotificationOutputWithContext(ctx context.Context) AnsibleTowerNotificationOutput { + return o +} + +// The notification is active (`true`) or inactive (`false`). Default is `false`. +func (o AnsibleTowerNotificationOutput) Active() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *AnsibleTowerNotification) pulumi.BoolPtrOutput { return v.Active }).(pulumi.BoolPtrOutput) +} + +// The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas +func (o AnsibleTowerNotificationOutput) CustomMessage() pulumi.StringOutput { + return o.ApplyT(func(v *AnsibleTowerNotification) pulumi.StringOutput { return v.CustomMessage }).(pulumi.StringOutput) +} + +// Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. +func (o AnsibleTowerNotificationOutput) Insecure() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *AnsibleTowerNotification) pulumi.BoolPtrOutput { return v.Insecure }).(pulumi.BoolPtrOutput) +} + +// The URL of the target Ansible Tower job template +func (o AnsibleTowerNotificationOutput) JobTemplateUrl() pulumi.StringOutput { + return o.ApplyT(func(v *AnsibleTowerNotification) pulumi.StringOutput { return v.JobTemplateUrl }).(pulumi.StringOutput) +} + +// The display name within the Dynatrace WebUI. +func (o AnsibleTowerNotificationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *AnsibleTowerNotification) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The password for the Ansible Tower account +func (o AnsibleTowerNotificationOutput) Password() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AnsibleTowerNotification) pulumi.StringPtrOutput { return v.Password }).(pulumi.StringPtrOutput) +} + +// The ID of the associated alerting profile. +func (o AnsibleTowerNotificationOutput) Profile() pulumi.StringOutput { + return o.ApplyT(func(v *AnsibleTowerNotification) pulumi.StringOutput { return v.Profile }).(pulumi.StringOutput) +} + +// The username of the Ansible Tower account +func (o AnsibleTowerNotificationOutput) Username() pulumi.StringOutput { + return o.ApplyT(func(v *AnsibleTowerNotification) pulumi.StringOutput { return v.Username }).(pulumi.StringOutput) +} + +type AnsibleTowerNotificationArrayOutput struct{ *pulumi.OutputState } + +func (AnsibleTowerNotificationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*AnsibleTowerNotification)(nil)).Elem() +} + +func (o AnsibleTowerNotificationArrayOutput) ToAnsibleTowerNotificationArrayOutput() AnsibleTowerNotificationArrayOutput { + return o +} + +func (o AnsibleTowerNotificationArrayOutput) ToAnsibleTowerNotificationArrayOutputWithContext(ctx context.Context) AnsibleTowerNotificationArrayOutput { + return o +} + +func (o AnsibleTowerNotificationArrayOutput) Index(i pulumi.IntInput) AnsibleTowerNotificationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *AnsibleTowerNotification { + return vs[0].([]*AnsibleTowerNotification)[vs[1].(int)] + }).(AnsibleTowerNotificationOutput) +} + +type AnsibleTowerNotificationMapOutput struct{ *pulumi.OutputState } + +func (AnsibleTowerNotificationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*AnsibleTowerNotification)(nil)).Elem() +} + +func (o AnsibleTowerNotificationMapOutput) ToAnsibleTowerNotificationMapOutput() AnsibleTowerNotificationMapOutput { + return o +} + +func (o AnsibleTowerNotificationMapOutput) ToAnsibleTowerNotificationMapOutputWithContext(ctx context.Context) AnsibleTowerNotificationMapOutput { + return o +} + +func (o AnsibleTowerNotificationMapOutput) MapIndex(k pulumi.StringInput) AnsibleTowerNotificationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *AnsibleTowerNotification { + return vs[0].(map[string]*AnsibleTowerNotification)[vs[1].(string)] + }).(AnsibleTowerNotificationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*AnsibleTowerNotificationInput)(nil)).Elem(), &AnsibleTowerNotification{}) + pulumi.RegisterInputType(reflect.TypeOf((*AnsibleTowerNotificationArrayInput)(nil)).Elem(), AnsibleTowerNotificationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*AnsibleTowerNotificationMapInput)(nil)).Elem(), AnsibleTowerNotificationMap{}) + pulumi.RegisterOutputType(AnsibleTowerNotificationOutput{}) + pulumi.RegisterOutputType(AnsibleTowerNotificationArrayOutput{}) + pulumi.RegisterOutputType(AnsibleTowerNotificationMapOutput{}) +} diff --git a/sdk/go/dynatrace/emailNotification.go b/sdk/go/dynatrace/emailNotification.go new file mode 100644 index 00000000..e9f608be --- /dev/null +++ b/sdk/go/dynatrace/emailNotification.go @@ -0,0 +1,346 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dynatrace + +import ( + "context" + "reflect" + + "github.com/pkg/errors" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type EmailNotification struct { + pulumi.CustomResourceState + + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolPtrOutput `pulumi:"active"` + // The list of the email BCC-recipients + Bccs pulumi.StringArrayOutput `pulumi:"bccs"` + // The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Body pulumi.StringOutput `pulumi:"body"` + // The list of the email CC-recipients + Ccs pulumi.StringArrayOutput `pulumi:"ccs"` + // The name of the notification configuration + Name pulumi.StringOutput `pulumi:"name"` + // Send email if problem is closed + NotifyClosedProblems pulumi.BoolPtrOutput `pulumi:"notifyClosedProblems"` + // The ID of the associated alerting profile + Profile pulumi.StringOutput `pulumi:"profile"` + // The subject of the email notifications + Subject pulumi.StringOutput `pulumi:"subject"` + // The list of the email recipients + Tos pulumi.StringArrayOutput `pulumi:"tos"` +} + +// NewEmailNotification registers a new resource with the given unique name, arguments, and options. +func NewEmailNotification(ctx *pulumi.Context, + name string, args *EmailNotificationArgs, opts ...pulumi.ResourceOption) (*EmailNotification, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Body == nil { + return nil, errors.New("invalid value for required argument 'Body'") + } + if args.Profile == nil { + return nil, errors.New("invalid value for required argument 'Profile'") + } + if args.Subject == nil { + return nil, errors.New("invalid value for required argument 'Subject'") + } + if args.Tos == nil { + return nil, errors.New("invalid value for required argument 'Tos'") + } + opts = pkgResourceDefaultOpts(opts) + var resource EmailNotification + err := ctx.RegisterResource("dynatrace:index/emailNotification:EmailNotification", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetEmailNotification gets an existing EmailNotification resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetEmailNotification(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *EmailNotificationState, opts ...pulumi.ResourceOption) (*EmailNotification, error) { + var resource EmailNotification + err := ctx.ReadResource("dynatrace:index/emailNotification:EmailNotification", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering EmailNotification resources. +type emailNotificationState struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active *bool `pulumi:"active"` + // The list of the email BCC-recipients + Bccs []string `pulumi:"bccs"` + // The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Body *string `pulumi:"body"` + // The list of the email CC-recipients + Ccs []string `pulumi:"ccs"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // Send email if problem is closed + NotifyClosedProblems *bool `pulumi:"notifyClosedProblems"` + // The ID of the associated alerting profile + Profile *string `pulumi:"profile"` + // The subject of the email notifications + Subject *string `pulumi:"subject"` + // The list of the email recipients + Tos []string `pulumi:"tos"` +} + +type EmailNotificationState struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolPtrInput + // The list of the email BCC-recipients + Bccs pulumi.StringArrayInput + // The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Body pulumi.StringPtrInput + // The list of the email CC-recipients + Ccs pulumi.StringArrayInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // Send email if problem is closed + NotifyClosedProblems pulumi.BoolPtrInput + // The ID of the associated alerting profile + Profile pulumi.StringPtrInput + // The subject of the email notifications + Subject pulumi.StringPtrInput + // The list of the email recipients + Tos pulumi.StringArrayInput +} + +func (EmailNotificationState) ElementType() reflect.Type { + return reflect.TypeOf((*emailNotificationState)(nil)).Elem() +} + +type emailNotificationArgs struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active *bool `pulumi:"active"` + // The list of the email BCC-recipients + Bccs []string `pulumi:"bccs"` + // The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Body string `pulumi:"body"` + // The list of the email CC-recipients + Ccs []string `pulumi:"ccs"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // Send email if problem is closed + NotifyClosedProblems *bool `pulumi:"notifyClosedProblems"` + // The ID of the associated alerting profile + Profile string `pulumi:"profile"` + // The subject of the email notifications + Subject string `pulumi:"subject"` + // The list of the email recipients + Tos []string `pulumi:"tos"` +} + +// The set of arguments for constructing a EmailNotification resource. +type EmailNotificationArgs struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolPtrInput + // The list of the email BCC-recipients + Bccs pulumi.StringArrayInput + // The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Body pulumi.StringInput + // The list of the email CC-recipients + Ccs pulumi.StringArrayInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // Send email if problem is closed + NotifyClosedProblems pulumi.BoolPtrInput + // The ID of the associated alerting profile + Profile pulumi.StringInput + // The subject of the email notifications + Subject pulumi.StringInput + // The list of the email recipients + Tos pulumi.StringArrayInput +} + +func (EmailNotificationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*emailNotificationArgs)(nil)).Elem() +} + +type EmailNotificationInput interface { + pulumi.Input + + ToEmailNotificationOutput() EmailNotificationOutput + ToEmailNotificationOutputWithContext(ctx context.Context) EmailNotificationOutput +} + +func (*EmailNotification) ElementType() reflect.Type { + return reflect.TypeOf((**EmailNotification)(nil)).Elem() +} + +func (i *EmailNotification) ToEmailNotificationOutput() EmailNotificationOutput { + return i.ToEmailNotificationOutputWithContext(context.Background()) +} + +func (i *EmailNotification) ToEmailNotificationOutputWithContext(ctx context.Context) EmailNotificationOutput { + return pulumi.ToOutputWithContext(ctx, i).(EmailNotificationOutput) +} + +// EmailNotificationArrayInput is an input type that accepts EmailNotificationArray and EmailNotificationArrayOutput values. +// You can construct a concrete instance of `EmailNotificationArrayInput` via: +// +// EmailNotificationArray{ EmailNotificationArgs{...} } +type EmailNotificationArrayInput interface { + pulumi.Input + + ToEmailNotificationArrayOutput() EmailNotificationArrayOutput + ToEmailNotificationArrayOutputWithContext(context.Context) EmailNotificationArrayOutput +} + +type EmailNotificationArray []EmailNotificationInput + +func (EmailNotificationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EmailNotification)(nil)).Elem() +} + +func (i EmailNotificationArray) ToEmailNotificationArrayOutput() EmailNotificationArrayOutput { + return i.ToEmailNotificationArrayOutputWithContext(context.Background()) +} + +func (i EmailNotificationArray) ToEmailNotificationArrayOutputWithContext(ctx context.Context) EmailNotificationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EmailNotificationArrayOutput) +} + +// EmailNotificationMapInput is an input type that accepts EmailNotificationMap and EmailNotificationMapOutput values. +// You can construct a concrete instance of `EmailNotificationMapInput` via: +// +// EmailNotificationMap{ "key": EmailNotificationArgs{...} } +type EmailNotificationMapInput interface { + pulumi.Input + + ToEmailNotificationMapOutput() EmailNotificationMapOutput + ToEmailNotificationMapOutputWithContext(context.Context) EmailNotificationMapOutput +} + +type EmailNotificationMap map[string]EmailNotificationInput + +func (EmailNotificationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EmailNotification)(nil)).Elem() +} + +func (i EmailNotificationMap) ToEmailNotificationMapOutput() EmailNotificationMapOutput { + return i.ToEmailNotificationMapOutputWithContext(context.Background()) +} + +func (i EmailNotificationMap) ToEmailNotificationMapOutputWithContext(ctx context.Context) EmailNotificationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(EmailNotificationMapOutput) +} + +type EmailNotificationOutput struct{ *pulumi.OutputState } + +func (EmailNotificationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EmailNotification)(nil)).Elem() +} + +func (o EmailNotificationOutput) ToEmailNotificationOutput() EmailNotificationOutput { + return o +} + +func (o EmailNotificationOutput) ToEmailNotificationOutputWithContext(ctx context.Context) EmailNotificationOutput { + return o +} + +// The configuration is enabled (`true`) or disabled (`false`) +func (o EmailNotificationOutput) Active() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *EmailNotification) pulumi.BoolPtrOutput { return v.Active }).(pulumi.BoolPtrOutput) +} + +// The list of the email BCC-recipients +func (o EmailNotificationOutput) Bccs() pulumi.StringArrayOutput { + return o.ApplyT(func(v *EmailNotification) pulumi.StringArrayOutput { return v.Bccs }).(pulumi.StringArrayOutput) +} + +// The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas +func (o EmailNotificationOutput) Body() pulumi.StringOutput { + return o.ApplyT(func(v *EmailNotification) pulumi.StringOutput { return v.Body }).(pulumi.StringOutput) +} + +// The list of the email CC-recipients +func (o EmailNotificationOutput) Ccs() pulumi.StringArrayOutput { + return o.ApplyT(func(v *EmailNotification) pulumi.StringArrayOutput { return v.Ccs }).(pulumi.StringArrayOutput) +} + +// The name of the notification configuration +func (o EmailNotificationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *EmailNotification) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Send email if problem is closed +func (o EmailNotificationOutput) NotifyClosedProblems() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *EmailNotification) pulumi.BoolPtrOutput { return v.NotifyClosedProblems }).(pulumi.BoolPtrOutput) +} + +// The ID of the associated alerting profile +func (o EmailNotificationOutput) Profile() pulumi.StringOutput { + return o.ApplyT(func(v *EmailNotification) pulumi.StringOutput { return v.Profile }).(pulumi.StringOutput) +} + +// The subject of the email notifications +func (o EmailNotificationOutput) Subject() pulumi.StringOutput { + return o.ApplyT(func(v *EmailNotification) pulumi.StringOutput { return v.Subject }).(pulumi.StringOutput) +} + +// The list of the email recipients +func (o EmailNotificationOutput) Tos() pulumi.StringArrayOutput { + return o.ApplyT(func(v *EmailNotification) pulumi.StringArrayOutput { return v.Tos }).(pulumi.StringArrayOutput) +} + +type EmailNotificationArrayOutput struct{ *pulumi.OutputState } + +func (EmailNotificationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EmailNotification)(nil)).Elem() +} + +func (o EmailNotificationArrayOutput) ToEmailNotificationArrayOutput() EmailNotificationArrayOutput { + return o +} + +func (o EmailNotificationArrayOutput) ToEmailNotificationArrayOutputWithContext(ctx context.Context) EmailNotificationArrayOutput { + return o +} + +func (o EmailNotificationArrayOutput) Index(i pulumi.IntInput) EmailNotificationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *EmailNotification { + return vs[0].([]*EmailNotification)[vs[1].(int)] + }).(EmailNotificationOutput) +} + +type EmailNotificationMapOutput struct{ *pulumi.OutputState } + +func (EmailNotificationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EmailNotification)(nil)).Elem() +} + +func (o EmailNotificationMapOutput) ToEmailNotificationMapOutput() EmailNotificationMapOutput { + return o +} + +func (o EmailNotificationMapOutput) ToEmailNotificationMapOutputWithContext(ctx context.Context) EmailNotificationMapOutput { + return o +} + +func (o EmailNotificationMapOutput) MapIndex(k pulumi.StringInput) EmailNotificationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *EmailNotification { + return vs[0].(map[string]*EmailNotification)[vs[1].(string)] + }).(EmailNotificationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*EmailNotificationInput)(nil)).Elem(), &EmailNotification{}) + pulumi.RegisterInputType(reflect.TypeOf((*EmailNotificationArrayInput)(nil)).Elem(), EmailNotificationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EmailNotificationMapInput)(nil)).Elem(), EmailNotificationMap{}) + pulumi.RegisterOutputType(EmailNotificationOutput{}) + pulumi.RegisterOutputType(EmailNotificationArrayOutput{}) + pulumi.RegisterOutputType(EmailNotificationMapOutput{}) +} diff --git a/sdk/go/dynatrace/frequentIssues.go b/sdk/go/dynatrace/frequentIssues.go new file mode 100644 index 00000000..36dab7c2 --- /dev/null +++ b/sdk/go/dynatrace/frequentIssues.go @@ -0,0 +1,253 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dynatrace + +import ( + "context" + "reflect" + + "github.com/pkg/errors" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type FrequentIssues struct { + pulumi.CustomResourceState + + // Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + DetectApps pulumi.BoolOutput `pulumi:"detectApps"` + // Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + DetectInfra pulumi.BoolOutput `pulumi:"detectInfra"` + // Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + DetectTxn pulumi.BoolOutput `pulumi:"detectTxn"` +} + +// NewFrequentIssues registers a new resource with the given unique name, arguments, and options. +func NewFrequentIssues(ctx *pulumi.Context, + name string, args *FrequentIssuesArgs, opts ...pulumi.ResourceOption) (*FrequentIssues, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.DetectApps == nil { + return nil, errors.New("invalid value for required argument 'DetectApps'") + } + if args.DetectInfra == nil { + return nil, errors.New("invalid value for required argument 'DetectInfra'") + } + if args.DetectTxn == nil { + return nil, errors.New("invalid value for required argument 'DetectTxn'") + } + opts = pkgResourceDefaultOpts(opts) + var resource FrequentIssues + err := ctx.RegisterResource("dynatrace:index/frequentIssues:FrequentIssues", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetFrequentIssues gets an existing FrequentIssues resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetFrequentIssues(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *FrequentIssuesState, opts ...pulumi.ResourceOption) (*FrequentIssues, error) { + var resource FrequentIssues + err := ctx.ReadResource("dynatrace:index/frequentIssues:FrequentIssues", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering FrequentIssues resources. +type frequentIssuesState struct { + // Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + DetectApps *bool `pulumi:"detectApps"` + // Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + DetectInfra *bool `pulumi:"detectInfra"` + // Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + DetectTxn *bool `pulumi:"detectTxn"` +} + +type FrequentIssuesState struct { + // Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + DetectApps pulumi.BoolPtrInput + // Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + DetectInfra pulumi.BoolPtrInput + // Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + DetectTxn pulumi.BoolPtrInput +} + +func (FrequentIssuesState) ElementType() reflect.Type { + return reflect.TypeOf((*frequentIssuesState)(nil)).Elem() +} + +type frequentIssuesArgs struct { + // Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + DetectApps bool `pulumi:"detectApps"` + // Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + DetectInfra bool `pulumi:"detectInfra"` + // Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + DetectTxn bool `pulumi:"detectTxn"` +} + +// The set of arguments for constructing a FrequentIssues resource. +type FrequentIssuesArgs struct { + // Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + DetectApps pulumi.BoolInput + // Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + DetectInfra pulumi.BoolInput + // Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + DetectTxn pulumi.BoolInput +} + +func (FrequentIssuesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*frequentIssuesArgs)(nil)).Elem() +} + +type FrequentIssuesInput interface { + pulumi.Input + + ToFrequentIssuesOutput() FrequentIssuesOutput + ToFrequentIssuesOutputWithContext(ctx context.Context) FrequentIssuesOutput +} + +func (*FrequentIssues) ElementType() reflect.Type { + return reflect.TypeOf((**FrequentIssues)(nil)).Elem() +} + +func (i *FrequentIssues) ToFrequentIssuesOutput() FrequentIssuesOutput { + return i.ToFrequentIssuesOutputWithContext(context.Background()) +} + +func (i *FrequentIssues) ToFrequentIssuesOutputWithContext(ctx context.Context) FrequentIssuesOutput { + return pulumi.ToOutputWithContext(ctx, i).(FrequentIssuesOutput) +} + +// FrequentIssuesArrayInput is an input type that accepts FrequentIssuesArray and FrequentIssuesArrayOutput values. +// You can construct a concrete instance of `FrequentIssuesArrayInput` via: +// +// FrequentIssuesArray{ FrequentIssuesArgs{...} } +type FrequentIssuesArrayInput interface { + pulumi.Input + + ToFrequentIssuesArrayOutput() FrequentIssuesArrayOutput + ToFrequentIssuesArrayOutputWithContext(context.Context) FrequentIssuesArrayOutput +} + +type FrequentIssuesArray []FrequentIssuesInput + +func (FrequentIssuesArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*FrequentIssues)(nil)).Elem() +} + +func (i FrequentIssuesArray) ToFrequentIssuesArrayOutput() FrequentIssuesArrayOutput { + return i.ToFrequentIssuesArrayOutputWithContext(context.Background()) +} + +func (i FrequentIssuesArray) ToFrequentIssuesArrayOutputWithContext(ctx context.Context) FrequentIssuesArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(FrequentIssuesArrayOutput) +} + +// FrequentIssuesMapInput is an input type that accepts FrequentIssuesMap and FrequentIssuesMapOutput values. +// You can construct a concrete instance of `FrequentIssuesMapInput` via: +// +// FrequentIssuesMap{ "key": FrequentIssuesArgs{...} } +type FrequentIssuesMapInput interface { + pulumi.Input + + ToFrequentIssuesMapOutput() FrequentIssuesMapOutput + ToFrequentIssuesMapOutputWithContext(context.Context) FrequentIssuesMapOutput +} + +type FrequentIssuesMap map[string]FrequentIssuesInput + +func (FrequentIssuesMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*FrequentIssues)(nil)).Elem() +} + +func (i FrequentIssuesMap) ToFrequentIssuesMapOutput() FrequentIssuesMapOutput { + return i.ToFrequentIssuesMapOutputWithContext(context.Background()) +} + +func (i FrequentIssuesMap) ToFrequentIssuesMapOutputWithContext(ctx context.Context) FrequentIssuesMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(FrequentIssuesMapOutput) +} + +type FrequentIssuesOutput struct{ *pulumi.OutputState } + +func (FrequentIssuesOutput) ElementType() reflect.Type { + return reflect.TypeOf((**FrequentIssues)(nil)).Elem() +} + +func (o FrequentIssuesOutput) ToFrequentIssuesOutput() FrequentIssuesOutput { + return o +} + +func (o FrequentIssuesOutput) ToFrequentIssuesOutputWithContext(ctx context.Context) FrequentIssuesOutput { + return o +} + +// Detect frequent issues within applications, enabled (`true`) or disabled (`false`) +func (o FrequentIssuesOutput) DetectApps() pulumi.BoolOutput { + return o.ApplyT(func(v *FrequentIssues) pulumi.BoolOutput { return v.DetectApps }).(pulumi.BoolOutput) +} + +// Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) +func (o FrequentIssuesOutput) DetectInfra() pulumi.BoolOutput { + return o.ApplyT(func(v *FrequentIssues) pulumi.BoolOutput { return v.DetectInfra }).(pulumi.BoolOutput) +} + +// Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) +func (o FrequentIssuesOutput) DetectTxn() pulumi.BoolOutput { + return o.ApplyT(func(v *FrequentIssues) pulumi.BoolOutput { return v.DetectTxn }).(pulumi.BoolOutput) +} + +type FrequentIssuesArrayOutput struct{ *pulumi.OutputState } + +func (FrequentIssuesArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*FrequentIssues)(nil)).Elem() +} + +func (o FrequentIssuesArrayOutput) ToFrequentIssuesArrayOutput() FrequentIssuesArrayOutput { + return o +} + +func (o FrequentIssuesArrayOutput) ToFrequentIssuesArrayOutputWithContext(ctx context.Context) FrequentIssuesArrayOutput { + return o +} + +func (o FrequentIssuesArrayOutput) Index(i pulumi.IntInput) FrequentIssuesOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *FrequentIssues { + return vs[0].([]*FrequentIssues)[vs[1].(int)] + }).(FrequentIssuesOutput) +} + +type FrequentIssuesMapOutput struct{ *pulumi.OutputState } + +func (FrequentIssuesMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*FrequentIssues)(nil)).Elem() +} + +func (o FrequentIssuesMapOutput) ToFrequentIssuesMapOutput() FrequentIssuesMapOutput { + return o +} + +func (o FrequentIssuesMapOutput) ToFrequentIssuesMapOutputWithContext(ctx context.Context) FrequentIssuesMapOutput { + return o +} + +func (o FrequentIssuesMapOutput) MapIndex(k pulumi.StringInput) FrequentIssuesOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *FrequentIssues { + return vs[0].(map[string]*FrequentIssues)[vs[1].(string)] + }).(FrequentIssuesOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*FrequentIssuesInput)(nil)).Elem(), &FrequentIssues{}) + pulumi.RegisterInputType(reflect.TypeOf((*FrequentIssuesArrayInput)(nil)).Elem(), FrequentIssuesArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*FrequentIssuesMapInput)(nil)).Elem(), FrequentIssuesMap{}) + pulumi.RegisterOutputType(FrequentIssuesOutput{}) + pulumi.RegisterOutputType(FrequentIssuesArrayOutput{}) + pulumi.RegisterOutputType(FrequentIssuesMapOutput{}) +} diff --git a/sdk/go/dynatrace/getAlertingProfile.go b/sdk/go/dynatrace/getAlertingProfile.go new file mode 100644 index 00000000..af5bbd4a --- /dev/null +++ b/sdk/go/dynatrace/getAlertingProfile.go @@ -0,0 +1,123 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dynatrace + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// The Alerting Profile queries for an Alerting Profile that has a specified name. In case multiple Alerting Profiles share the same name the first one found will be used. +// The ID of this Data Resource aligns with the IDs used by the Dynatrace Settings 2.0 API. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-dynatrace/sdk/go/dynatrace" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _default, err := dynatrace.LookupAlertingProfile(ctx, &GetAlertingProfileArgs{ +// Name: "Default", +// }, nil) +// if err != nil { +// return err +// } +// _, err = dynatrace.NewWebhookNotification(ctx, "myWebhookNotification", &dynatrace.WebhookNotificationArgs{ +// Active: pulumi.Bool(false), +// Profile: pulumi.String(_default.Id), +// Url: pulumi.String("https://webhook.site/40bf4d43-1a50-4ebd-913d-bf50ce7c3a1e"), +// Insecure: pulumi.Bool(true), +// NotifyEventMerges: pulumi.Bool(true), +// NotifyClosedProblems: pulumi.Bool(true), +// Payload: pulumi.String("web-hook-payload"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupAlertingProfile(ctx *pulumi.Context, args *LookupAlertingProfileArgs, opts ...pulumi.InvokeOption) (*LookupAlertingProfileResult, error) { + opts = pkgInvokeDefaultOpts(opts) + var rv LookupAlertingProfileResult + err := ctx.Invoke("dynatrace:index/getAlertingProfile:getAlertingProfile", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getAlertingProfile. +type LookupAlertingProfileArgs struct { + Name string `pulumi:"name"` +} + +// A collection of values returned by getAlertingProfile. +type LookupAlertingProfileResult struct { + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + Name string `pulumi:"name"` +} + +func LookupAlertingProfileOutput(ctx *pulumi.Context, args LookupAlertingProfileOutputArgs, opts ...pulumi.InvokeOption) LookupAlertingProfileResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupAlertingProfileResult, error) { + args := v.(LookupAlertingProfileArgs) + r, err := LookupAlertingProfile(ctx, &args, opts...) + var s LookupAlertingProfileResult + if r != nil { + s = *r + } + return s, err + }).(LookupAlertingProfileResultOutput) +} + +// A collection of arguments for invoking getAlertingProfile. +type LookupAlertingProfileOutputArgs struct { + Name pulumi.StringInput `pulumi:"name"` +} + +func (LookupAlertingProfileOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupAlertingProfileArgs)(nil)).Elem() +} + +// A collection of values returned by getAlertingProfile. +type LookupAlertingProfileResultOutput struct{ *pulumi.OutputState } + +func (LookupAlertingProfileResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupAlertingProfileResult)(nil)).Elem() +} + +func (o LookupAlertingProfileResultOutput) ToLookupAlertingProfileResultOutput() LookupAlertingProfileResultOutput { + return o +} + +func (o LookupAlertingProfileResultOutput) ToLookupAlertingProfileResultOutputWithContext(ctx context.Context) LookupAlertingProfileResultOutput { + return o +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupAlertingProfileResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupAlertingProfileResult) string { return v.Id }).(pulumi.StringOutput) +} + +func (o LookupAlertingProfileResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v LookupAlertingProfileResult) string { return v.Name }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupAlertingProfileResultOutput{}) +} diff --git a/sdk/go/dynatrace/getCredentials.go b/sdk/go/dynatrace/getCredentials.go index d9454030..17abf3a7 100644 --- a/sdk/go/dynatrace/getCredentials.go +++ b/sdk/go/dynatrace/getCredentials.go @@ -10,7 +10,85 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) -// The credentials data source allows retrieval of all credentials. +// The `getCredentials` data source queries for Credentials stored within the Credentials Vault using the properties `name`, `scope` and `type`. At least one of `name`, `scope` or `type` needs to be specified as a non empty value. Combinations of the three properties are also possible. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-dynatrace/sdk/go/dynatrace" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// creds, err := dynatrace.GetCredentials(ctx, &GetCredentialsArgs{ +// Name: pulumi.StringRef("Office365 Access Token"), +// }, nil) +// if err != nil { +// return err +// } +// _, err = dynatrace.NewHttpMonitor(ctx, "#name#", &dynatrace.HttpMonitorArgs{ +// Enabled: pulumi.Bool(true), +// Frequency: pulumi.Int(60), +// Locations: pulumi.StringArray{ +// pulumi.String("SYNTHETIC_LOCATION-781752216580B1BC"), +// }, +// AnomalyDetections: HttpMonitorAnomalyDetectionArray{ +// &HttpMonitorAnomalyDetectionArgs{ +// LoadingTimeThresholds: HttpMonitorAnomalyDetectionLoadingTimeThresholdArray{ +// &HttpMonitorAnomalyDetectionLoadingTimeThresholdArgs{ +// Enabled: pulumi.Bool(true), +// }, +// }, +// OutageHandlings: HttpMonitorAnomalyDetectionOutageHandlingArray{ +// &HttpMonitorAnomalyDetectionOutageHandlingArgs{ +// GlobalOutage: pulumi.Bool(true), +// LocalOutage: pulumi.Bool(false), +// RetryOnError: pulumi.Bool(false), +// }, +// }, +// }, +// }, +// Script: &HttpMonitorScriptArgs{ +// Requests: HttpMonitorScriptRequestArray{ +// &HttpMonitorScriptRequestArgs{ +// Description: pulumi.String("google.com"), +// Method: pulumi.String("GET"), +// Url: pulumi.String("https://www.google.com"), +// Authentication: &HttpMonitorScriptRequestAuthenticationArgs{ +// Type: pulumi.String("BASIC_AUTHENTICATION"), +// Credentials: pulumi.String(creds.Id), +// }, +// Configuration: &HttpMonitorScriptRequestConfigurationArgs{ +// AcceptAnyCertificate: pulumi.Bool(true), +// FollowRedirects: pulumi.Bool(true), +// }, +// Validation: &HttpMonitorScriptRequestValidationArgs{ +// Rules: HttpMonitorScriptRequestValidationRuleArray{ +// &HttpMonitorScriptRequestValidationRuleArgs{ +// Type: pulumi.String("httpStatusesList"), +// PassIfFound: pulumi.Bool(false), +// Value: pulumi.String(">=400"), +// }, +// }, +// }, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` func GetCredentials(ctx *pulumi.Context, args *GetCredentialsArgs, opts ...pulumi.InvokeOption) (*GetCredentialsResult, error) { opts = pkgInvokeDefaultOpts(opts) var rv GetCredentialsResult @@ -23,14 +101,24 @@ func GetCredentials(ctx *pulumi.Context, args *GetCredentialsArgs, opts ...pulum // A collection of arguments for invoking getCredentials. type GetCredentialsArgs struct { - Credentials map[string]string `pulumi:"credentials"` + // The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + Name *string `pulumi:"name"` + // The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + Scope *string `pulumi:"scope"` + // The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + Type *string `pulumi:"type"` } // A collection of values returned by getCredentials. type GetCredentialsResult struct { - Credentials map[string]string `pulumi:"credentials"` // The provider-assigned unique ID for this managed resource. Id string `pulumi:"id"` + // The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + Name *string `pulumi:"name"` + // The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + Scope *string `pulumi:"scope"` + // The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + Type *string `pulumi:"type"` } func GetCredentialsOutput(ctx *pulumi.Context, args GetCredentialsOutputArgs, opts ...pulumi.InvokeOption) GetCredentialsResultOutput { @@ -48,7 +136,12 @@ func GetCredentialsOutput(ctx *pulumi.Context, args GetCredentialsOutputArgs, op // A collection of arguments for invoking getCredentials. type GetCredentialsOutputArgs struct { - Credentials pulumi.StringMapInput `pulumi:"credentials"` + // The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + Name pulumi.StringPtrInput `pulumi:"name"` + // The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + Scope pulumi.StringPtrInput `pulumi:"scope"` + // The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + Type pulumi.StringPtrInput `pulumi:"type"` } func (GetCredentialsOutputArgs) ElementType() reflect.Type { @@ -70,15 +163,26 @@ func (o GetCredentialsResultOutput) ToGetCredentialsResultOutputWithContext(ctx return o } -func (o GetCredentialsResultOutput) Credentials() pulumi.StringMapOutput { - return o.ApplyT(func(v GetCredentialsResult) map[string]string { return v.Credentials }).(pulumi.StringMapOutput) -} - // The provider-assigned unique ID for this managed resource. func (o GetCredentialsResultOutput) Id() pulumi.StringOutput { return o.ApplyT(func(v GetCredentialsResult) string { return v.Id }).(pulumi.StringOutput) } +// The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match +func (o GetCredentialsResultOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetCredentialsResult) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +// The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. +func (o GetCredentialsResultOutput) Scope() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetCredentialsResult) *string { return v.Scope }).(pulumi.StringPtrOutput) +} + +// The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match +func (o GetCredentialsResultOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetCredentialsResult) *string { return v.Type }).(pulumi.StringPtrOutput) +} + func init() { pulumi.RegisterOutputType(GetCredentialsResultOutput{}) } diff --git a/sdk/go/dynatrace/init.go b/sdk/go/dynatrace/init.go index 1d5de7bc..c339e089 100644 --- a/sdk/go/dynatrace/init.go +++ b/sdk/go/dynatrace/init.go @@ -24,6 +24,8 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &Alerting{} case "dynatrace:index/alertingProfile:AlertingProfile": r = &AlertingProfile{} + case "dynatrace:index/ansibleTowerNotification:AnsibleTowerNotification": + r = &AnsibleTowerNotification{} case "dynatrace:index/applicationAnomalies:ApplicationAnomalies": r = &ApplicationAnomalies{} case "dynatrace:index/applicationDataPrivacy:ApplicationDataPrivacy": @@ -56,8 +58,12 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &DatabaseAnomalies{} case "dynatrace:index/diskAnomalies:DiskAnomalies": r = &DiskAnomalies{} + case "dynatrace:index/emailNotification:EmailNotification": + r = &EmailNotification{} case "dynatrace:index/environment:Environment": r = &Environment{} + case "dynatrace:index/frequentIssues:FrequentIssues": + r = &FrequentIssues{} case "dynatrace:index/hostAnomalies:HostAnomalies": r = &HostAnomalies{} case "dynatrace:index/hostNaming:HostNaming": @@ -68,10 +74,14 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &IbmMqFilters{} case "dynatrace:index/imsBridges:ImsBridges": r = &ImsBridges{} + case "dynatrace:index/jiraNotification:JiraNotification": + r = &JiraNotification{} case "dynatrace:index/k8sCredentials:K8sCredentials": r = &K8sCredentials{} case "dynatrace:index/keyRequests:KeyRequests": r = &KeyRequests{} + case "dynatrace:index/maintenance:Maintenance": + r = &Maintenance{} case "dynatrace:index/maintenanceWindow:MaintenanceWindow": r = &MaintenanceWindow{} case "dynatrace:index/managementZone:ManagementZone": @@ -82,6 +92,10 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &NetworkZones{} case "dynatrace:index/notification:Notification": r = &Notification{} + case "dynatrace:index/opsGenieNotification:OpsGenieNotification": + r = &OpsGenieNotification{} + case "dynatrace:index/pagerDutyNotification:PagerDutyNotification": + r = &PagerDutyNotification{} case "dynatrace:index/processgroupNaming:ProcessgroupNaming": r = &ProcessgroupNaming{} case "dynatrace:index/queueManager:QueueManager": @@ -100,6 +114,10 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &ServiceAnomalies{} case "dynatrace:index/serviceNaming:ServiceNaming": r = &ServiceNaming{} + case "dynatrace:index/serviceNowNotification:ServiceNowNotification": + r = &ServiceNowNotification{} + case "dynatrace:index/slackNotification:SlackNotification": + r = &SlackNotification{} case "dynatrace:index/slo:Slo": r = &Slo{} case "dynatrace:index/spanAttributed:SpanAttributed": @@ -110,12 +128,20 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &SpanContextPropagation{} case "dynatrace:index/spanEntryPoint:SpanEntryPoint": r = &SpanEntryPoint{} + case "dynatrace:index/trrelloNotification:TrrelloNotification": + r = &TrrelloNotification{} case "dynatrace:index/user:User": r = &User{} case "dynatrace:index/userGroup:UserGroup": r = &UserGroup{} + case "dynatrace:index/victorOpsNotification:VictorOpsNotification": + r = &VictorOpsNotification{} case "dynatrace:index/webApplication:WebApplication": r = &WebApplication{} + case "dynatrace:index/webhookNotification:WebhookNotification": + r = &WebhookNotification{} + case "dynatrace:index/xmattersNotification:XmattersNotification": + r = &XmattersNotification{} default: return nil, fmt.Errorf("unknown resource type: %s", typ) } @@ -154,6 +180,11 @@ func init() { "index/alertingProfile", &module{version}, ) + pulumi.RegisterResourceModule( + "dynatrace", + "index/ansibleTowerNotification", + &module{version}, + ) pulumi.RegisterResourceModule( "dynatrace", "index/applicationAnomalies", @@ -234,11 +265,21 @@ func init() { "index/diskAnomalies", &module{version}, ) + pulumi.RegisterResourceModule( + "dynatrace", + "index/emailNotification", + &module{version}, + ) pulumi.RegisterResourceModule( "dynatrace", "index/environment", &module{version}, ) + pulumi.RegisterResourceModule( + "dynatrace", + "index/frequentIssues", + &module{version}, + ) pulumi.RegisterResourceModule( "dynatrace", "index/hostAnomalies", @@ -264,6 +305,11 @@ func init() { "index/imsBridges", &module{version}, ) + pulumi.RegisterResourceModule( + "dynatrace", + "index/jiraNotification", + &module{version}, + ) pulumi.RegisterResourceModule( "dynatrace", "index/k8sCredentials", @@ -274,6 +320,11 @@ func init() { "index/keyRequests", &module{version}, ) + pulumi.RegisterResourceModule( + "dynatrace", + "index/maintenance", + &module{version}, + ) pulumi.RegisterResourceModule( "dynatrace", "index/maintenanceWindow", @@ -299,6 +350,16 @@ func init() { "index/notification", &module{version}, ) + pulumi.RegisterResourceModule( + "dynatrace", + "index/opsGenieNotification", + &module{version}, + ) + pulumi.RegisterResourceModule( + "dynatrace", + "index/pagerDutyNotification", + &module{version}, + ) pulumi.RegisterResourceModule( "dynatrace", "index/processgroupNaming", @@ -344,6 +405,16 @@ func init() { "index/serviceNaming", &module{version}, ) + pulumi.RegisterResourceModule( + "dynatrace", + "index/serviceNowNotification", + &module{version}, + ) + pulumi.RegisterResourceModule( + "dynatrace", + "index/slackNotification", + &module{version}, + ) pulumi.RegisterResourceModule( "dynatrace", "index/slo", @@ -369,6 +440,11 @@ func init() { "index/spanEntryPoint", &module{version}, ) + pulumi.RegisterResourceModule( + "dynatrace", + "index/trrelloNotification", + &module{version}, + ) pulumi.RegisterResourceModule( "dynatrace", "index/user", @@ -379,11 +455,26 @@ func init() { "index/userGroup", &module{version}, ) + pulumi.RegisterResourceModule( + "dynatrace", + "index/victorOpsNotification", + &module{version}, + ) pulumi.RegisterResourceModule( "dynatrace", "index/webApplication", &module{version}, ) + pulumi.RegisterResourceModule( + "dynatrace", + "index/webhookNotification", + &module{version}, + ) + pulumi.RegisterResourceModule( + "dynatrace", + "index/xmattersNotification", + &module{version}, + ) pulumi.RegisterResourcePackage( "dynatrace", &pkg{version}, diff --git a/sdk/go/dynatrace/jiraNotification.go b/sdk/go/dynatrace/jiraNotification.go new file mode 100644 index 00000000..f655446b --- /dev/null +++ b/sdk/go/dynatrace/jiraNotification.go @@ -0,0 +1,380 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dynatrace + +import ( + "context" + "reflect" + + "github.com/pkg/errors" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type JiraNotification struct { + pulumi.CustomResourceState + + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolOutput `pulumi:"active"` + // The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + ApiToken pulumi.StringPtrOutput `pulumi:"apiToken"` + // The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + Description pulumi.StringOutput `pulumi:"description"` + // The type of the Jira issue to be created by this notification + IssueType pulumi.StringOutput `pulumi:"issueType"` + // The name of the notification configuration + Name pulumi.StringOutput `pulumi:"name"` + // The ID of the associated alerting profile + Profile pulumi.StringOutput `pulumi:"profile"` + // The project key of the Jira issue to be created by this notification + ProjectKey pulumi.StringOutput `pulumi:"projectKey"` + // The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Summary pulumi.StringOutput `pulumi:"summary"` + // The URL of the Jira API endpoint + Url pulumi.StringOutput `pulumi:"url"` + // The username of the Jira profile + Username pulumi.StringOutput `pulumi:"username"` +} + +// NewJiraNotification registers a new resource with the given unique name, arguments, and options. +func NewJiraNotification(ctx *pulumi.Context, + name string, args *JiraNotificationArgs, opts ...pulumi.ResourceOption) (*JiraNotification, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Active == nil { + return nil, errors.New("invalid value for required argument 'Active'") + } + if args.Description == nil { + return nil, errors.New("invalid value for required argument 'Description'") + } + if args.IssueType == nil { + return nil, errors.New("invalid value for required argument 'IssueType'") + } + if args.Profile == nil { + return nil, errors.New("invalid value for required argument 'Profile'") + } + if args.ProjectKey == nil { + return nil, errors.New("invalid value for required argument 'ProjectKey'") + } + if args.Summary == nil { + return nil, errors.New("invalid value for required argument 'Summary'") + } + if args.Url == nil { + return nil, errors.New("invalid value for required argument 'Url'") + } + if args.Username == nil { + return nil, errors.New("invalid value for required argument 'Username'") + } + if args.ApiToken != nil { + args.ApiToken = pulumi.ToSecret(args.ApiToken).(pulumi.StringPtrOutput) + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "apiToken", + }) + opts = append(opts, secrets) + opts = pkgResourceDefaultOpts(opts) + var resource JiraNotification + err := ctx.RegisterResource("dynatrace:index/jiraNotification:JiraNotification", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetJiraNotification gets an existing JiraNotification resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetJiraNotification(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *JiraNotificationState, opts ...pulumi.ResourceOption) (*JiraNotification, error) { + var resource JiraNotification + err := ctx.ReadResource("dynatrace:index/jiraNotification:JiraNotification", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering JiraNotification resources. +type jiraNotificationState struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active *bool `pulumi:"active"` + // The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + ApiToken *string `pulumi:"apiToken"` + // The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + Description *string `pulumi:"description"` + // The type of the Jira issue to be created by this notification + IssueType *string `pulumi:"issueType"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // The ID of the associated alerting profile + Profile *string `pulumi:"profile"` + // The project key of the Jira issue to be created by this notification + ProjectKey *string `pulumi:"projectKey"` + // The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Summary *string `pulumi:"summary"` + // The URL of the Jira API endpoint + Url *string `pulumi:"url"` + // The username of the Jira profile + Username *string `pulumi:"username"` +} + +type JiraNotificationState struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolPtrInput + // The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + ApiToken pulumi.StringPtrInput + // The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + Description pulumi.StringPtrInput + // The type of the Jira issue to be created by this notification + IssueType pulumi.StringPtrInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // The ID of the associated alerting profile + Profile pulumi.StringPtrInput + // The project key of the Jira issue to be created by this notification + ProjectKey pulumi.StringPtrInput + // The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Summary pulumi.StringPtrInput + // The URL of the Jira API endpoint + Url pulumi.StringPtrInput + // The username of the Jira profile + Username pulumi.StringPtrInput +} + +func (JiraNotificationState) ElementType() reflect.Type { + return reflect.TypeOf((*jiraNotificationState)(nil)).Elem() +} + +type jiraNotificationArgs struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active bool `pulumi:"active"` + // The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + ApiToken *string `pulumi:"apiToken"` + // The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + Description string `pulumi:"description"` + // The type of the Jira issue to be created by this notification + IssueType string `pulumi:"issueType"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // The ID of the associated alerting profile + Profile string `pulumi:"profile"` + // The project key of the Jira issue to be created by this notification + ProjectKey string `pulumi:"projectKey"` + // The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Summary string `pulumi:"summary"` + // The URL of the Jira API endpoint + Url string `pulumi:"url"` + // The username of the Jira profile + Username string `pulumi:"username"` +} + +// The set of arguments for constructing a JiraNotification resource. +type JiraNotificationArgs struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolInput + // The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + ApiToken pulumi.StringPtrInput + // The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + Description pulumi.StringInput + // The type of the Jira issue to be created by this notification + IssueType pulumi.StringInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // The ID of the associated alerting profile + Profile pulumi.StringInput + // The project key of the Jira issue to be created by this notification + ProjectKey pulumi.StringInput + // The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Summary pulumi.StringInput + // The URL of the Jira API endpoint + Url pulumi.StringInput + // The username of the Jira profile + Username pulumi.StringInput +} + +func (JiraNotificationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*jiraNotificationArgs)(nil)).Elem() +} + +type JiraNotificationInput interface { + pulumi.Input + + ToJiraNotificationOutput() JiraNotificationOutput + ToJiraNotificationOutputWithContext(ctx context.Context) JiraNotificationOutput +} + +func (*JiraNotification) ElementType() reflect.Type { + return reflect.TypeOf((**JiraNotification)(nil)).Elem() +} + +func (i *JiraNotification) ToJiraNotificationOutput() JiraNotificationOutput { + return i.ToJiraNotificationOutputWithContext(context.Background()) +} + +func (i *JiraNotification) ToJiraNotificationOutputWithContext(ctx context.Context) JiraNotificationOutput { + return pulumi.ToOutputWithContext(ctx, i).(JiraNotificationOutput) +} + +// JiraNotificationArrayInput is an input type that accepts JiraNotificationArray and JiraNotificationArrayOutput values. +// You can construct a concrete instance of `JiraNotificationArrayInput` via: +// +// JiraNotificationArray{ JiraNotificationArgs{...} } +type JiraNotificationArrayInput interface { + pulumi.Input + + ToJiraNotificationArrayOutput() JiraNotificationArrayOutput + ToJiraNotificationArrayOutputWithContext(context.Context) JiraNotificationArrayOutput +} + +type JiraNotificationArray []JiraNotificationInput + +func (JiraNotificationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*JiraNotification)(nil)).Elem() +} + +func (i JiraNotificationArray) ToJiraNotificationArrayOutput() JiraNotificationArrayOutput { + return i.ToJiraNotificationArrayOutputWithContext(context.Background()) +} + +func (i JiraNotificationArray) ToJiraNotificationArrayOutputWithContext(ctx context.Context) JiraNotificationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(JiraNotificationArrayOutput) +} + +// JiraNotificationMapInput is an input type that accepts JiraNotificationMap and JiraNotificationMapOutput values. +// You can construct a concrete instance of `JiraNotificationMapInput` via: +// +// JiraNotificationMap{ "key": JiraNotificationArgs{...} } +type JiraNotificationMapInput interface { + pulumi.Input + + ToJiraNotificationMapOutput() JiraNotificationMapOutput + ToJiraNotificationMapOutputWithContext(context.Context) JiraNotificationMapOutput +} + +type JiraNotificationMap map[string]JiraNotificationInput + +func (JiraNotificationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*JiraNotification)(nil)).Elem() +} + +func (i JiraNotificationMap) ToJiraNotificationMapOutput() JiraNotificationMapOutput { + return i.ToJiraNotificationMapOutputWithContext(context.Background()) +} + +func (i JiraNotificationMap) ToJiraNotificationMapOutputWithContext(ctx context.Context) JiraNotificationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(JiraNotificationMapOutput) +} + +type JiraNotificationOutput struct{ *pulumi.OutputState } + +func (JiraNotificationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**JiraNotification)(nil)).Elem() +} + +func (o JiraNotificationOutput) ToJiraNotificationOutput() JiraNotificationOutput { + return o +} + +func (o JiraNotificationOutput) ToJiraNotificationOutputWithContext(ctx context.Context) JiraNotificationOutput { + return o +} + +// The configuration is enabled (`true`) or disabled (`false`) +func (o JiraNotificationOutput) Active() pulumi.BoolOutput { + return o.ApplyT(func(v *JiraNotification) pulumi.BoolOutput { return v.Active }).(pulumi.BoolOutput) +} + +// The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) +func (o JiraNotificationOutput) ApiToken() pulumi.StringPtrOutput { + return o.ApplyT(func(v *JiraNotification) pulumi.StringPtrOutput { return v.ApiToken }).(pulumi.StringPtrOutput) +} + +// The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary +func (o JiraNotificationOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *JiraNotification) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// The type of the Jira issue to be created by this notification +func (o JiraNotificationOutput) IssueType() pulumi.StringOutput { + return o.ApplyT(func(v *JiraNotification) pulumi.StringOutput { return v.IssueType }).(pulumi.StringOutput) +} + +// The name of the notification configuration +func (o JiraNotificationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *JiraNotification) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The ID of the associated alerting profile +func (o JiraNotificationOutput) Profile() pulumi.StringOutput { + return o.ApplyT(func(v *JiraNotification) pulumi.StringOutput { return v.Profile }).(pulumi.StringOutput) +} + +// The project key of the Jira issue to be created by this notification +func (o JiraNotificationOutput) ProjectKey() pulumi.StringOutput { + return o.ApplyT(func(v *JiraNotification) pulumi.StringOutput { return v.ProjectKey }).(pulumi.StringOutput) +} + +// The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas +func (o JiraNotificationOutput) Summary() pulumi.StringOutput { + return o.ApplyT(func(v *JiraNotification) pulumi.StringOutput { return v.Summary }).(pulumi.StringOutput) +} + +// The URL of the Jira API endpoint +func (o JiraNotificationOutput) Url() pulumi.StringOutput { + return o.ApplyT(func(v *JiraNotification) pulumi.StringOutput { return v.Url }).(pulumi.StringOutput) +} + +// The username of the Jira profile +func (o JiraNotificationOutput) Username() pulumi.StringOutput { + return o.ApplyT(func(v *JiraNotification) pulumi.StringOutput { return v.Username }).(pulumi.StringOutput) +} + +type JiraNotificationArrayOutput struct{ *pulumi.OutputState } + +func (JiraNotificationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*JiraNotification)(nil)).Elem() +} + +func (o JiraNotificationArrayOutput) ToJiraNotificationArrayOutput() JiraNotificationArrayOutput { + return o +} + +func (o JiraNotificationArrayOutput) ToJiraNotificationArrayOutputWithContext(ctx context.Context) JiraNotificationArrayOutput { + return o +} + +func (o JiraNotificationArrayOutput) Index(i pulumi.IntInput) JiraNotificationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *JiraNotification { + return vs[0].([]*JiraNotification)[vs[1].(int)] + }).(JiraNotificationOutput) +} + +type JiraNotificationMapOutput struct{ *pulumi.OutputState } + +func (JiraNotificationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*JiraNotification)(nil)).Elem() +} + +func (o JiraNotificationMapOutput) ToJiraNotificationMapOutput() JiraNotificationMapOutput { + return o +} + +func (o JiraNotificationMapOutput) ToJiraNotificationMapOutputWithContext(ctx context.Context) JiraNotificationMapOutput { + return o +} + +func (o JiraNotificationMapOutput) MapIndex(k pulumi.StringInput) JiraNotificationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *JiraNotification { + return vs[0].(map[string]*JiraNotification)[vs[1].(string)] + }).(JiraNotificationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*JiraNotificationInput)(nil)).Elem(), &JiraNotification{}) + pulumi.RegisterInputType(reflect.TypeOf((*JiraNotificationArrayInput)(nil)).Elem(), JiraNotificationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*JiraNotificationMapInput)(nil)).Elem(), JiraNotificationMap{}) + pulumi.RegisterOutputType(JiraNotificationOutput{}) + pulumi.RegisterOutputType(JiraNotificationArrayOutput{}) + pulumi.RegisterOutputType(JiraNotificationMapOutput{}) +} diff --git a/sdk/go/dynatrace/maintenance.go b/sdk/go/dynatrace/maintenance.go new file mode 100644 index 00000000..7598b5eb --- /dev/null +++ b/sdk/go/dynatrace/maintenance.go @@ -0,0 +1,265 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dynatrace + +import ( + "context" + "reflect" + + "github.com/pkg/errors" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type Maintenance struct { + pulumi.CustomResourceState + + // The maintenance window is enabled or disabled + Enabled pulumi.BoolPtrOutput `pulumi:"enabled"` + // The filters of the maintenance window + Filters MaintenanceFilterArrayOutput `pulumi:"filters"` + // The general properties of the maintenance window + GeneralProperties MaintenanceGeneralPropertiesOutput `pulumi:"generalProperties"` + // The schedule of the maintenance window + Schedule MaintenanceScheduleOutput `pulumi:"schedule"` +} + +// NewMaintenance registers a new resource with the given unique name, arguments, and options. +func NewMaintenance(ctx *pulumi.Context, + name string, args *MaintenanceArgs, opts ...pulumi.ResourceOption) (*Maintenance, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.GeneralProperties == nil { + return nil, errors.New("invalid value for required argument 'GeneralProperties'") + } + if args.Schedule == nil { + return nil, errors.New("invalid value for required argument 'Schedule'") + } + opts = pkgResourceDefaultOpts(opts) + var resource Maintenance + err := ctx.RegisterResource("dynatrace:index/maintenance:Maintenance", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetMaintenance gets an existing Maintenance resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetMaintenance(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *MaintenanceState, opts ...pulumi.ResourceOption) (*Maintenance, error) { + var resource Maintenance + err := ctx.ReadResource("dynatrace:index/maintenance:Maintenance", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Maintenance resources. +type maintenanceState struct { + // The maintenance window is enabled or disabled + Enabled *bool `pulumi:"enabled"` + // The filters of the maintenance window + Filters []MaintenanceFilter `pulumi:"filters"` + // The general properties of the maintenance window + GeneralProperties *MaintenanceGeneralProperties `pulumi:"generalProperties"` + // The schedule of the maintenance window + Schedule *MaintenanceSchedule `pulumi:"schedule"` +} + +type MaintenanceState struct { + // The maintenance window is enabled or disabled + Enabled pulumi.BoolPtrInput + // The filters of the maintenance window + Filters MaintenanceFilterArrayInput + // The general properties of the maintenance window + GeneralProperties MaintenanceGeneralPropertiesPtrInput + // The schedule of the maintenance window + Schedule MaintenanceSchedulePtrInput +} + +func (MaintenanceState) ElementType() reflect.Type { + return reflect.TypeOf((*maintenanceState)(nil)).Elem() +} + +type maintenanceArgs struct { + // The maintenance window is enabled or disabled + Enabled *bool `pulumi:"enabled"` + // The filters of the maintenance window + Filters []MaintenanceFilter `pulumi:"filters"` + // The general properties of the maintenance window + GeneralProperties MaintenanceGeneralProperties `pulumi:"generalProperties"` + // The schedule of the maintenance window + Schedule MaintenanceSchedule `pulumi:"schedule"` +} + +// The set of arguments for constructing a Maintenance resource. +type MaintenanceArgs struct { + // The maintenance window is enabled or disabled + Enabled pulumi.BoolPtrInput + // The filters of the maintenance window + Filters MaintenanceFilterArrayInput + // The general properties of the maintenance window + GeneralProperties MaintenanceGeneralPropertiesInput + // The schedule of the maintenance window + Schedule MaintenanceScheduleInput +} + +func (MaintenanceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*maintenanceArgs)(nil)).Elem() +} + +type MaintenanceInput interface { + pulumi.Input + + ToMaintenanceOutput() MaintenanceOutput + ToMaintenanceOutputWithContext(ctx context.Context) MaintenanceOutput +} + +func (*Maintenance) ElementType() reflect.Type { + return reflect.TypeOf((**Maintenance)(nil)).Elem() +} + +func (i *Maintenance) ToMaintenanceOutput() MaintenanceOutput { + return i.ToMaintenanceOutputWithContext(context.Background()) +} + +func (i *Maintenance) ToMaintenanceOutputWithContext(ctx context.Context) MaintenanceOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceOutput) +} + +// MaintenanceArrayInput is an input type that accepts MaintenanceArray and MaintenanceArrayOutput values. +// You can construct a concrete instance of `MaintenanceArrayInput` via: +// +// MaintenanceArray{ MaintenanceArgs{...} } +type MaintenanceArrayInput interface { + pulumi.Input + + ToMaintenanceArrayOutput() MaintenanceArrayOutput + ToMaintenanceArrayOutputWithContext(context.Context) MaintenanceArrayOutput +} + +type MaintenanceArray []MaintenanceInput + +func (MaintenanceArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Maintenance)(nil)).Elem() +} + +func (i MaintenanceArray) ToMaintenanceArrayOutput() MaintenanceArrayOutput { + return i.ToMaintenanceArrayOutputWithContext(context.Background()) +} + +func (i MaintenanceArray) ToMaintenanceArrayOutputWithContext(ctx context.Context) MaintenanceArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceArrayOutput) +} + +// MaintenanceMapInput is an input type that accepts MaintenanceMap and MaintenanceMapOutput values. +// You can construct a concrete instance of `MaintenanceMapInput` via: +// +// MaintenanceMap{ "key": MaintenanceArgs{...} } +type MaintenanceMapInput interface { + pulumi.Input + + ToMaintenanceMapOutput() MaintenanceMapOutput + ToMaintenanceMapOutputWithContext(context.Context) MaintenanceMapOutput +} + +type MaintenanceMap map[string]MaintenanceInput + +func (MaintenanceMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Maintenance)(nil)).Elem() +} + +func (i MaintenanceMap) ToMaintenanceMapOutput() MaintenanceMapOutput { + return i.ToMaintenanceMapOutputWithContext(context.Background()) +} + +func (i MaintenanceMap) ToMaintenanceMapOutputWithContext(ctx context.Context) MaintenanceMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceMapOutput) +} + +type MaintenanceOutput struct{ *pulumi.OutputState } + +func (MaintenanceOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Maintenance)(nil)).Elem() +} + +func (o MaintenanceOutput) ToMaintenanceOutput() MaintenanceOutput { + return o +} + +func (o MaintenanceOutput) ToMaintenanceOutputWithContext(ctx context.Context) MaintenanceOutput { + return o +} + +// The maintenance window is enabled or disabled +func (o MaintenanceOutput) Enabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Maintenance) pulumi.BoolPtrOutput { return v.Enabled }).(pulumi.BoolPtrOutput) +} + +// The filters of the maintenance window +func (o MaintenanceOutput) Filters() MaintenanceFilterArrayOutput { + return o.ApplyT(func(v *Maintenance) MaintenanceFilterArrayOutput { return v.Filters }).(MaintenanceFilterArrayOutput) +} + +// The general properties of the maintenance window +func (o MaintenanceOutput) GeneralProperties() MaintenanceGeneralPropertiesOutput { + return o.ApplyT(func(v *Maintenance) MaintenanceGeneralPropertiesOutput { return v.GeneralProperties }).(MaintenanceGeneralPropertiesOutput) +} + +// The schedule of the maintenance window +func (o MaintenanceOutput) Schedule() MaintenanceScheduleOutput { + return o.ApplyT(func(v *Maintenance) MaintenanceScheduleOutput { return v.Schedule }).(MaintenanceScheduleOutput) +} + +type MaintenanceArrayOutput struct{ *pulumi.OutputState } + +func (MaintenanceArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Maintenance)(nil)).Elem() +} + +func (o MaintenanceArrayOutput) ToMaintenanceArrayOutput() MaintenanceArrayOutput { + return o +} + +func (o MaintenanceArrayOutput) ToMaintenanceArrayOutputWithContext(ctx context.Context) MaintenanceArrayOutput { + return o +} + +func (o MaintenanceArrayOutput) Index(i pulumi.IntInput) MaintenanceOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Maintenance { + return vs[0].([]*Maintenance)[vs[1].(int)] + }).(MaintenanceOutput) +} + +type MaintenanceMapOutput struct{ *pulumi.OutputState } + +func (MaintenanceMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Maintenance)(nil)).Elem() +} + +func (o MaintenanceMapOutput) ToMaintenanceMapOutput() MaintenanceMapOutput { + return o +} + +func (o MaintenanceMapOutput) ToMaintenanceMapOutputWithContext(ctx context.Context) MaintenanceMapOutput { + return o +} + +func (o MaintenanceMapOutput) MapIndex(k pulumi.StringInput) MaintenanceOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Maintenance { + return vs[0].(map[string]*Maintenance)[vs[1].(string)] + }).(MaintenanceOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceInput)(nil)).Elem(), &Maintenance{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceArrayInput)(nil)).Elem(), MaintenanceArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceMapInput)(nil)).Elem(), MaintenanceMap{}) + pulumi.RegisterOutputType(MaintenanceOutput{}) + pulumi.RegisterOutputType(MaintenanceArrayOutput{}) + pulumi.RegisterOutputType(MaintenanceMapOutput{}) +} diff --git a/sdk/go/dynatrace/opsGenieNotification.go b/sdk/go/dynatrace/opsGenieNotification.go new file mode 100644 index 00000000..c6207fbe --- /dev/null +++ b/sdk/go/dynatrace/opsGenieNotification.go @@ -0,0 +1,308 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dynatrace + +import ( + "context" + "reflect" + + "github.com/pkg/errors" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type OpsGenieNotification struct { + pulumi.CustomResourceState + + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolOutput `pulumi:"active"` + // The API key to access OpsGenie + ApiKey pulumi.StringPtrOutput `pulumi:"apiKey"` + // The region domain of the OpsGenie + Domain pulumi.StringOutput `pulumi:"domain"` + // The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + Message pulumi.StringOutput `pulumi:"message"` + // The name of the notification configuration + Name pulumi.StringOutput `pulumi:"name"` + // The ID of the associated alerting profile + Profile pulumi.StringOutput `pulumi:"profile"` +} + +// NewOpsGenieNotification registers a new resource with the given unique name, arguments, and options. +func NewOpsGenieNotification(ctx *pulumi.Context, + name string, args *OpsGenieNotificationArgs, opts ...pulumi.ResourceOption) (*OpsGenieNotification, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Active == nil { + return nil, errors.New("invalid value for required argument 'Active'") + } + if args.Domain == nil { + return nil, errors.New("invalid value for required argument 'Domain'") + } + if args.Message == nil { + return nil, errors.New("invalid value for required argument 'Message'") + } + if args.Profile == nil { + return nil, errors.New("invalid value for required argument 'Profile'") + } + if args.ApiKey != nil { + args.ApiKey = pulumi.ToSecret(args.ApiKey).(pulumi.StringPtrOutput) + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "apiKey", + }) + opts = append(opts, secrets) + opts = pkgResourceDefaultOpts(opts) + var resource OpsGenieNotification + err := ctx.RegisterResource("dynatrace:index/opsGenieNotification:OpsGenieNotification", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetOpsGenieNotification gets an existing OpsGenieNotification resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetOpsGenieNotification(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *OpsGenieNotificationState, opts ...pulumi.ResourceOption) (*OpsGenieNotification, error) { + var resource OpsGenieNotification + err := ctx.ReadResource("dynatrace:index/opsGenieNotification:OpsGenieNotification", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering OpsGenieNotification resources. +type opsGenieNotificationState struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active *bool `pulumi:"active"` + // The API key to access OpsGenie + ApiKey *string `pulumi:"apiKey"` + // The region domain of the OpsGenie + Domain *string `pulumi:"domain"` + // The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + Message *string `pulumi:"message"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // The ID of the associated alerting profile + Profile *string `pulumi:"profile"` +} + +type OpsGenieNotificationState struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolPtrInput + // The API key to access OpsGenie + ApiKey pulumi.StringPtrInput + // The region domain of the OpsGenie + Domain pulumi.StringPtrInput + // The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + Message pulumi.StringPtrInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // The ID of the associated alerting profile + Profile pulumi.StringPtrInput +} + +func (OpsGenieNotificationState) ElementType() reflect.Type { + return reflect.TypeOf((*opsGenieNotificationState)(nil)).Elem() +} + +type opsGenieNotificationArgs struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active bool `pulumi:"active"` + // The API key to access OpsGenie + ApiKey *string `pulumi:"apiKey"` + // The region domain of the OpsGenie + Domain string `pulumi:"domain"` + // The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + Message string `pulumi:"message"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // The ID of the associated alerting profile + Profile string `pulumi:"profile"` +} + +// The set of arguments for constructing a OpsGenieNotification resource. +type OpsGenieNotificationArgs struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolInput + // The API key to access OpsGenie + ApiKey pulumi.StringPtrInput + // The region domain of the OpsGenie + Domain pulumi.StringInput + // The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + Message pulumi.StringInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // The ID of the associated alerting profile + Profile pulumi.StringInput +} + +func (OpsGenieNotificationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*opsGenieNotificationArgs)(nil)).Elem() +} + +type OpsGenieNotificationInput interface { + pulumi.Input + + ToOpsGenieNotificationOutput() OpsGenieNotificationOutput + ToOpsGenieNotificationOutputWithContext(ctx context.Context) OpsGenieNotificationOutput +} + +func (*OpsGenieNotification) ElementType() reflect.Type { + return reflect.TypeOf((**OpsGenieNotification)(nil)).Elem() +} + +func (i *OpsGenieNotification) ToOpsGenieNotificationOutput() OpsGenieNotificationOutput { + return i.ToOpsGenieNotificationOutputWithContext(context.Background()) +} + +func (i *OpsGenieNotification) ToOpsGenieNotificationOutputWithContext(ctx context.Context) OpsGenieNotificationOutput { + return pulumi.ToOutputWithContext(ctx, i).(OpsGenieNotificationOutput) +} + +// OpsGenieNotificationArrayInput is an input type that accepts OpsGenieNotificationArray and OpsGenieNotificationArrayOutput values. +// You can construct a concrete instance of `OpsGenieNotificationArrayInput` via: +// +// OpsGenieNotificationArray{ OpsGenieNotificationArgs{...} } +type OpsGenieNotificationArrayInput interface { + pulumi.Input + + ToOpsGenieNotificationArrayOutput() OpsGenieNotificationArrayOutput + ToOpsGenieNotificationArrayOutputWithContext(context.Context) OpsGenieNotificationArrayOutput +} + +type OpsGenieNotificationArray []OpsGenieNotificationInput + +func (OpsGenieNotificationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*OpsGenieNotification)(nil)).Elem() +} + +func (i OpsGenieNotificationArray) ToOpsGenieNotificationArrayOutput() OpsGenieNotificationArrayOutput { + return i.ToOpsGenieNotificationArrayOutputWithContext(context.Background()) +} + +func (i OpsGenieNotificationArray) ToOpsGenieNotificationArrayOutputWithContext(ctx context.Context) OpsGenieNotificationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(OpsGenieNotificationArrayOutput) +} + +// OpsGenieNotificationMapInput is an input type that accepts OpsGenieNotificationMap and OpsGenieNotificationMapOutput values. +// You can construct a concrete instance of `OpsGenieNotificationMapInput` via: +// +// OpsGenieNotificationMap{ "key": OpsGenieNotificationArgs{...} } +type OpsGenieNotificationMapInput interface { + pulumi.Input + + ToOpsGenieNotificationMapOutput() OpsGenieNotificationMapOutput + ToOpsGenieNotificationMapOutputWithContext(context.Context) OpsGenieNotificationMapOutput +} + +type OpsGenieNotificationMap map[string]OpsGenieNotificationInput + +func (OpsGenieNotificationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*OpsGenieNotification)(nil)).Elem() +} + +func (i OpsGenieNotificationMap) ToOpsGenieNotificationMapOutput() OpsGenieNotificationMapOutput { + return i.ToOpsGenieNotificationMapOutputWithContext(context.Background()) +} + +func (i OpsGenieNotificationMap) ToOpsGenieNotificationMapOutputWithContext(ctx context.Context) OpsGenieNotificationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(OpsGenieNotificationMapOutput) +} + +type OpsGenieNotificationOutput struct{ *pulumi.OutputState } + +func (OpsGenieNotificationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**OpsGenieNotification)(nil)).Elem() +} + +func (o OpsGenieNotificationOutput) ToOpsGenieNotificationOutput() OpsGenieNotificationOutput { + return o +} + +func (o OpsGenieNotificationOutput) ToOpsGenieNotificationOutputWithContext(ctx context.Context) OpsGenieNotificationOutput { + return o +} + +// The configuration is enabled (`true`) or disabled (`false`) +func (o OpsGenieNotificationOutput) Active() pulumi.BoolOutput { + return o.ApplyT(func(v *OpsGenieNotification) pulumi.BoolOutput { return v.Active }).(pulumi.BoolOutput) +} + +// The API key to access OpsGenie +func (o OpsGenieNotificationOutput) ApiKey() pulumi.StringPtrOutput { + return o.ApplyT(func(v *OpsGenieNotification) pulumi.StringPtrOutput { return v.ApiKey }).(pulumi.StringPtrOutput) +} + +// The region domain of the OpsGenie +func (o OpsGenieNotificationOutput) Domain() pulumi.StringOutput { + return o.ApplyT(func(v *OpsGenieNotification) pulumi.StringOutput { return v.Domain }).(pulumi.StringOutput) +} + +// The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem +func (o OpsGenieNotificationOutput) Message() pulumi.StringOutput { + return o.ApplyT(func(v *OpsGenieNotification) pulumi.StringOutput { return v.Message }).(pulumi.StringOutput) +} + +// The name of the notification configuration +func (o OpsGenieNotificationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *OpsGenieNotification) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The ID of the associated alerting profile +func (o OpsGenieNotificationOutput) Profile() pulumi.StringOutput { + return o.ApplyT(func(v *OpsGenieNotification) pulumi.StringOutput { return v.Profile }).(pulumi.StringOutput) +} + +type OpsGenieNotificationArrayOutput struct{ *pulumi.OutputState } + +func (OpsGenieNotificationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*OpsGenieNotification)(nil)).Elem() +} + +func (o OpsGenieNotificationArrayOutput) ToOpsGenieNotificationArrayOutput() OpsGenieNotificationArrayOutput { + return o +} + +func (o OpsGenieNotificationArrayOutput) ToOpsGenieNotificationArrayOutputWithContext(ctx context.Context) OpsGenieNotificationArrayOutput { + return o +} + +func (o OpsGenieNotificationArrayOutput) Index(i pulumi.IntInput) OpsGenieNotificationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *OpsGenieNotification { + return vs[0].([]*OpsGenieNotification)[vs[1].(int)] + }).(OpsGenieNotificationOutput) +} + +type OpsGenieNotificationMapOutput struct{ *pulumi.OutputState } + +func (OpsGenieNotificationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*OpsGenieNotification)(nil)).Elem() +} + +func (o OpsGenieNotificationMapOutput) ToOpsGenieNotificationMapOutput() OpsGenieNotificationMapOutput { + return o +} + +func (o OpsGenieNotificationMapOutput) ToOpsGenieNotificationMapOutputWithContext(ctx context.Context) OpsGenieNotificationMapOutput { + return o +} + +func (o OpsGenieNotificationMapOutput) MapIndex(k pulumi.StringInput) OpsGenieNotificationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *OpsGenieNotification { + return vs[0].(map[string]*OpsGenieNotification)[vs[1].(string)] + }).(OpsGenieNotificationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*OpsGenieNotificationInput)(nil)).Elem(), &OpsGenieNotification{}) + pulumi.RegisterInputType(reflect.TypeOf((*OpsGenieNotificationArrayInput)(nil)).Elem(), OpsGenieNotificationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*OpsGenieNotificationMapInput)(nil)).Elem(), OpsGenieNotificationMap{}) + pulumi.RegisterOutputType(OpsGenieNotificationOutput{}) + pulumi.RegisterOutputType(OpsGenieNotificationArrayOutput{}) + pulumi.RegisterOutputType(OpsGenieNotificationMapOutput{}) +} diff --git a/sdk/go/dynatrace/pagerDutyNotification.go b/sdk/go/dynatrace/pagerDutyNotification.go new file mode 100644 index 00000000..5ee75bae --- /dev/null +++ b/sdk/go/dynatrace/pagerDutyNotification.go @@ -0,0 +1,308 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dynatrace + +import ( + "context" + "reflect" + + "github.com/pkg/errors" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type PagerDutyNotification struct { + pulumi.CustomResourceState + + // The name of the PagerDuty account + Account pulumi.StringOutput `pulumi:"account"` + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolOutput `pulumi:"active"` + // The API key to access PagerDuty + ApiKey pulumi.StringPtrOutput `pulumi:"apiKey"` + // The name of the notification configuration + Name pulumi.StringOutput `pulumi:"name"` + // The ID of the associated alerting profile + Profile pulumi.StringOutput `pulumi:"profile"` + // The name of the PagerDuty Service + Service pulumi.StringOutput `pulumi:"service"` +} + +// NewPagerDutyNotification registers a new resource with the given unique name, arguments, and options. +func NewPagerDutyNotification(ctx *pulumi.Context, + name string, args *PagerDutyNotificationArgs, opts ...pulumi.ResourceOption) (*PagerDutyNotification, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Account == nil { + return nil, errors.New("invalid value for required argument 'Account'") + } + if args.Active == nil { + return nil, errors.New("invalid value for required argument 'Active'") + } + if args.Profile == nil { + return nil, errors.New("invalid value for required argument 'Profile'") + } + if args.Service == nil { + return nil, errors.New("invalid value for required argument 'Service'") + } + if args.ApiKey != nil { + args.ApiKey = pulumi.ToSecret(args.ApiKey).(pulumi.StringPtrOutput) + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "apiKey", + }) + opts = append(opts, secrets) + opts = pkgResourceDefaultOpts(opts) + var resource PagerDutyNotification + err := ctx.RegisterResource("dynatrace:index/pagerDutyNotification:PagerDutyNotification", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetPagerDutyNotification gets an existing PagerDutyNotification resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetPagerDutyNotification(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *PagerDutyNotificationState, opts ...pulumi.ResourceOption) (*PagerDutyNotification, error) { + var resource PagerDutyNotification + err := ctx.ReadResource("dynatrace:index/pagerDutyNotification:PagerDutyNotification", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering PagerDutyNotification resources. +type pagerDutyNotificationState struct { + // The name of the PagerDuty account + Account *string `pulumi:"account"` + // The configuration is enabled (`true`) or disabled (`false`) + Active *bool `pulumi:"active"` + // The API key to access PagerDuty + ApiKey *string `pulumi:"apiKey"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // The ID of the associated alerting profile + Profile *string `pulumi:"profile"` + // The name of the PagerDuty Service + Service *string `pulumi:"service"` +} + +type PagerDutyNotificationState struct { + // The name of the PagerDuty account + Account pulumi.StringPtrInput + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolPtrInput + // The API key to access PagerDuty + ApiKey pulumi.StringPtrInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // The ID of the associated alerting profile + Profile pulumi.StringPtrInput + // The name of the PagerDuty Service + Service pulumi.StringPtrInput +} + +func (PagerDutyNotificationState) ElementType() reflect.Type { + return reflect.TypeOf((*pagerDutyNotificationState)(nil)).Elem() +} + +type pagerDutyNotificationArgs struct { + // The name of the PagerDuty account + Account string `pulumi:"account"` + // The configuration is enabled (`true`) or disabled (`false`) + Active bool `pulumi:"active"` + // The API key to access PagerDuty + ApiKey *string `pulumi:"apiKey"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // The ID of the associated alerting profile + Profile string `pulumi:"profile"` + // The name of the PagerDuty Service + Service string `pulumi:"service"` +} + +// The set of arguments for constructing a PagerDutyNotification resource. +type PagerDutyNotificationArgs struct { + // The name of the PagerDuty account + Account pulumi.StringInput + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolInput + // The API key to access PagerDuty + ApiKey pulumi.StringPtrInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // The ID of the associated alerting profile + Profile pulumi.StringInput + // The name of the PagerDuty Service + Service pulumi.StringInput +} + +func (PagerDutyNotificationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*pagerDutyNotificationArgs)(nil)).Elem() +} + +type PagerDutyNotificationInput interface { + pulumi.Input + + ToPagerDutyNotificationOutput() PagerDutyNotificationOutput + ToPagerDutyNotificationOutputWithContext(ctx context.Context) PagerDutyNotificationOutput +} + +func (*PagerDutyNotification) ElementType() reflect.Type { + return reflect.TypeOf((**PagerDutyNotification)(nil)).Elem() +} + +func (i *PagerDutyNotification) ToPagerDutyNotificationOutput() PagerDutyNotificationOutput { + return i.ToPagerDutyNotificationOutputWithContext(context.Background()) +} + +func (i *PagerDutyNotification) ToPagerDutyNotificationOutputWithContext(ctx context.Context) PagerDutyNotificationOutput { + return pulumi.ToOutputWithContext(ctx, i).(PagerDutyNotificationOutput) +} + +// PagerDutyNotificationArrayInput is an input type that accepts PagerDutyNotificationArray and PagerDutyNotificationArrayOutput values. +// You can construct a concrete instance of `PagerDutyNotificationArrayInput` via: +// +// PagerDutyNotificationArray{ PagerDutyNotificationArgs{...} } +type PagerDutyNotificationArrayInput interface { + pulumi.Input + + ToPagerDutyNotificationArrayOutput() PagerDutyNotificationArrayOutput + ToPagerDutyNotificationArrayOutputWithContext(context.Context) PagerDutyNotificationArrayOutput +} + +type PagerDutyNotificationArray []PagerDutyNotificationInput + +func (PagerDutyNotificationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*PagerDutyNotification)(nil)).Elem() +} + +func (i PagerDutyNotificationArray) ToPagerDutyNotificationArrayOutput() PagerDutyNotificationArrayOutput { + return i.ToPagerDutyNotificationArrayOutputWithContext(context.Background()) +} + +func (i PagerDutyNotificationArray) ToPagerDutyNotificationArrayOutputWithContext(ctx context.Context) PagerDutyNotificationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(PagerDutyNotificationArrayOutput) +} + +// PagerDutyNotificationMapInput is an input type that accepts PagerDutyNotificationMap and PagerDutyNotificationMapOutput values. +// You can construct a concrete instance of `PagerDutyNotificationMapInput` via: +// +// PagerDutyNotificationMap{ "key": PagerDutyNotificationArgs{...} } +type PagerDutyNotificationMapInput interface { + pulumi.Input + + ToPagerDutyNotificationMapOutput() PagerDutyNotificationMapOutput + ToPagerDutyNotificationMapOutputWithContext(context.Context) PagerDutyNotificationMapOutput +} + +type PagerDutyNotificationMap map[string]PagerDutyNotificationInput + +func (PagerDutyNotificationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*PagerDutyNotification)(nil)).Elem() +} + +func (i PagerDutyNotificationMap) ToPagerDutyNotificationMapOutput() PagerDutyNotificationMapOutput { + return i.ToPagerDutyNotificationMapOutputWithContext(context.Background()) +} + +func (i PagerDutyNotificationMap) ToPagerDutyNotificationMapOutputWithContext(ctx context.Context) PagerDutyNotificationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(PagerDutyNotificationMapOutput) +} + +type PagerDutyNotificationOutput struct{ *pulumi.OutputState } + +func (PagerDutyNotificationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**PagerDutyNotification)(nil)).Elem() +} + +func (o PagerDutyNotificationOutput) ToPagerDutyNotificationOutput() PagerDutyNotificationOutput { + return o +} + +func (o PagerDutyNotificationOutput) ToPagerDutyNotificationOutputWithContext(ctx context.Context) PagerDutyNotificationOutput { + return o +} + +// The name of the PagerDuty account +func (o PagerDutyNotificationOutput) Account() pulumi.StringOutput { + return o.ApplyT(func(v *PagerDutyNotification) pulumi.StringOutput { return v.Account }).(pulumi.StringOutput) +} + +// The configuration is enabled (`true`) or disabled (`false`) +func (o PagerDutyNotificationOutput) Active() pulumi.BoolOutput { + return o.ApplyT(func(v *PagerDutyNotification) pulumi.BoolOutput { return v.Active }).(pulumi.BoolOutput) +} + +// The API key to access PagerDuty +func (o PagerDutyNotificationOutput) ApiKey() pulumi.StringPtrOutput { + return o.ApplyT(func(v *PagerDutyNotification) pulumi.StringPtrOutput { return v.ApiKey }).(pulumi.StringPtrOutput) +} + +// The name of the notification configuration +func (o PagerDutyNotificationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *PagerDutyNotification) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The ID of the associated alerting profile +func (o PagerDutyNotificationOutput) Profile() pulumi.StringOutput { + return o.ApplyT(func(v *PagerDutyNotification) pulumi.StringOutput { return v.Profile }).(pulumi.StringOutput) +} + +// The name of the PagerDuty Service +func (o PagerDutyNotificationOutput) Service() pulumi.StringOutput { + return o.ApplyT(func(v *PagerDutyNotification) pulumi.StringOutput { return v.Service }).(pulumi.StringOutput) +} + +type PagerDutyNotificationArrayOutput struct{ *pulumi.OutputState } + +func (PagerDutyNotificationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*PagerDutyNotification)(nil)).Elem() +} + +func (o PagerDutyNotificationArrayOutput) ToPagerDutyNotificationArrayOutput() PagerDutyNotificationArrayOutput { + return o +} + +func (o PagerDutyNotificationArrayOutput) ToPagerDutyNotificationArrayOutputWithContext(ctx context.Context) PagerDutyNotificationArrayOutput { + return o +} + +func (o PagerDutyNotificationArrayOutput) Index(i pulumi.IntInput) PagerDutyNotificationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *PagerDutyNotification { + return vs[0].([]*PagerDutyNotification)[vs[1].(int)] + }).(PagerDutyNotificationOutput) +} + +type PagerDutyNotificationMapOutput struct{ *pulumi.OutputState } + +func (PagerDutyNotificationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*PagerDutyNotification)(nil)).Elem() +} + +func (o PagerDutyNotificationMapOutput) ToPagerDutyNotificationMapOutput() PagerDutyNotificationMapOutput { + return o +} + +func (o PagerDutyNotificationMapOutput) ToPagerDutyNotificationMapOutputWithContext(ctx context.Context) PagerDutyNotificationMapOutput { + return o +} + +func (o PagerDutyNotificationMapOutput) MapIndex(k pulumi.StringInput) PagerDutyNotificationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *PagerDutyNotification { + return vs[0].(map[string]*PagerDutyNotification)[vs[1].(string)] + }).(PagerDutyNotificationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*PagerDutyNotificationInput)(nil)).Elem(), &PagerDutyNotification{}) + pulumi.RegisterInputType(reflect.TypeOf((*PagerDutyNotificationArrayInput)(nil)).Elem(), PagerDutyNotificationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*PagerDutyNotificationMapInput)(nil)).Elem(), PagerDutyNotificationMap{}) + pulumi.RegisterOutputType(PagerDutyNotificationOutput{}) + pulumi.RegisterOutputType(PagerDutyNotificationArrayOutput{}) + pulumi.RegisterOutputType(PagerDutyNotificationMapOutput{}) +} diff --git a/sdk/go/dynatrace/pulumiTypes.go b/sdk/go/dynatrace/pulumiTypes.go index 4eadad44..6b72a0f0 100644 --- a/sdk/go/dynatrace/pulumiTypes.go +++ b/sdk/go/dynatrace/pulumiTypes.go @@ -5631,10 +5631,11 @@ func (o ApplicationErrorRulesHttpErrorsRuleArrayOutput) Index(i pulumi.IntInput) } type AutotagEntitySelectorBasedRule struct { - Enabled *bool `pulumi:"enabled"` - Selector *string `pulumi:"selector"` - Unknowns *string `pulumi:"unknowns"` - ValueFormat *string `pulumi:"valueFormat"` + Enabled *bool `pulumi:"enabled"` + Normalization *string `pulumi:"normalization"` + Selector *string `pulumi:"selector"` + Unknowns *string `pulumi:"unknowns"` + ValueFormat *string `pulumi:"valueFormat"` } // AutotagEntitySelectorBasedRuleInput is an input type that accepts AutotagEntitySelectorBasedRuleArgs and AutotagEntitySelectorBasedRuleOutput values. @@ -5649,10 +5650,11 @@ type AutotagEntitySelectorBasedRuleInput interface { } type AutotagEntitySelectorBasedRuleArgs struct { - Enabled pulumi.BoolPtrInput `pulumi:"enabled"` - Selector pulumi.StringPtrInput `pulumi:"selector"` - Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` - ValueFormat pulumi.StringPtrInput `pulumi:"valueFormat"` + Enabled pulumi.BoolPtrInput `pulumi:"enabled"` + Normalization pulumi.StringPtrInput `pulumi:"normalization"` + Selector pulumi.StringPtrInput `pulumi:"selector"` + Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` + ValueFormat pulumi.StringPtrInput `pulumi:"valueFormat"` } func (AutotagEntitySelectorBasedRuleArgs) ElementType() reflect.Type { @@ -5710,6 +5712,10 @@ func (o AutotagEntitySelectorBasedRuleOutput) Enabled() pulumi.BoolPtrOutput { return o.ApplyT(func(v AutotagEntitySelectorBasedRule) *bool { return v.Enabled }).(pulumi.BoolPtrOutput) } +func (o AutotagEntitySelectorBasedRuleOutput) Normalization() pulumi.StringPtrOutput { + return o.ApplyT(func(v AutotagEntitySelectorBasedRule) *string { return v.Normalization }).(pulumi.StringPtrOutput) +} + func (o AutotagEntitySelectorBasedRuleOutput) Selector() pulumi.StringPtrOutput { return o.ApplyT(func(v AutotagEntitySelectorBasedRule) *string { return v.Selector }).(pulumi.StringPtrOutput) } @@ -41171,6 +41177,8 @@ type DashboardDashboardMetadata struct { Name string `pulumi:"name"` // the owner of the dashboard Owner string `pulumi:"owner"` + // the dashboard is a preset (`true`) or not (`false`). Default is `false`. + Preset *bool `pulumi:"preset"` // the dashboard is shared (`true`) or private (`false`) Shared *bool `pulumi:"shared"` // represents sharing configuration of a dashboard @@ -41205,6 +41213,8 @@ type DashboardDashboardMetadataArgs struct { Name pulumi.StringInput `pulumi:"name"` // the owner of the dashboard Owner pulumi.StringInput `pulumi:"owner"` + // the dashboard is a preset (`true`) or not (`false`). Default is `false`. + Preset pulumi.BoolPtrInput `pulumi:"preset"` // the dashboard is shared (`true`) or private (`false`) Shared pulumi.BoolPtrInput `pulumi:"shared"` // represents sharing configuration of a dashboard @@ -41319,6 +41329,11 @@ func (o DashboardDashboardMetadataOutput) Owner() pulumi.StringOutput { return o.ApplyT(func(v DashboardDashboardMetadata) string { return v.Owner }).(pulumi.StringOutput) } +// the dashboard is a preset (`true`) or not (`false`). Default is `false`. +func (o DashboardDashboardMetadataOutput) Preset() pulumi.BoolPtrOutput { + return o.ApplyT(func(v DashboardDashboardMetadata) *bool { return v.Preset }).(pulumi.BoolPtrOutput) +} + // the dashboard is shared (`true`) or private (`false`) func (o DashboardDashboardMetadataOutput) Shared() pulumi.BoolPtrOutput { return o.ApplyT(func(v DashboardDashboardMetadata) *bool { return v.Shared }).(pulumi.BoolPtrOutput) @@ -41418,6 +41433,16 @@ func (o DashboardDashboardMetadataPtrOutput) Owner() pulumi.StringPtrOutput { }).(pulumi.StringPtrOutput) } +// the dashboard is a preset (`true`) or not (`false`). Default is `false`. +func (o DashboardDashboardMetadataPtrOutput) Preset() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *DashboardDashboardMetadata) *bool { + if v == nil { + return nil + } + return v.Preset + }).(pulumi.BoolPtrOutput) +} + // the dashboard is shared (`true`) or private (`false`) func (o DashboardDashboardMetadataPtrOutput) Shared() pulumi.BoolPtrOutput { return o.ApplyT(func(v *DashboardDashboardMetadata) *bool { @@ -65260,3546 +65285,3575 @@ func (o K8sCredentialsEventsFieldSelectorArrayOutput) Index(i pulumi.IntInput) K }).(K8sCredentialsEventsFieldSelectorOutput) } -type MaintenanceWindowMetadata struct { - // Dynatrace server version - ClusterVersion *string `pulumi:"clusterVersion"` - // A Sorted list of the version numbers of the configuration - ConfigurationVersions []int `pulumi:"configurationVersions"` - // A Sorted list of the version numbers of the configuration - CurrentConfigurationVersions []string `pulumi:"currentConfigurationVersions"` +type MaintenanceFilter struct { + // A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies + Filters []MaintenanceFilterFilter `pulumi:"filters"` } -// MaintenanceWindowMetadataInput is an input type that accepts MaintenanceWindowMetadataArgs and MaintenanceWindowMetadataOutput values. -// You can construct a concrete instance of `MaintenanceWindowMetadataInput` via: +// MaintenanceFilterInput is an input type that accepts MaintenanceFilterArgs and MaintenanceFilterOutput values. +// You can construct a concrete instance of `MaintenanceFilterInput` via: // -// MaintenanceWindowMetadataArgs{...} -type MaintenanceWindowMetadataInput interface { +// MaintenanceFilterArgs{...} +type MaintenanceFilterInput interface { pulumi.Input - ToMaintenanceWindowMetadataOutput() MaintenanceWindowMetadataOutput - ToMaintenanceWindowMetadataOutputWithContext(context.Context) MaintenanceWindowMetadataOutput + ToMaintenanceFilterOutput() MaintenanceFilterOutput + ToMaintenanceFilterOutputWithContext(context.Context) MaintenanceFilterOutput } -type MaintenanceWindowMetadataArgs struct { - // Dynatrace server version - ClusterVersion pulumi.StringPtrInput `pulumi:"clusterVersion"` - // A Sorted list of the version numbers of the configuration - ConfigurationVersions pulumi.IntArrayInput `pulumi:"configurationVersions"` - // A Sorted list of the version numbers of the configuration - CurrentConfigurationVersions pulumi.StringArrayInput `pulumi:"currentConfigurationVersions"` +type MaintenanceFilterArgs struct { + // A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies + Filters MaintenanceFilterFilterArrayInput `pulumi:"filters"` } -func (MaintenanceWindowMetadataArgs) ElementType() reflect.Type { - return reflect.TypeOf((*MaintenanceWindowMetadata)(nil)).Elem() +func (MaintenanceFilterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceFilter)(nil)).Elem() } -func (i MaintenanceWindowMetadataArgs) ToMaintenanceWindowMetadataOutput() MaintenanceWindowMetadataOutput { - return i.ToMaintenanceWindowMetadataOutputWithContext(context.Background()) +func (i MaintenanceFilterArgs) ToMaintenanceFilterOutput() MaintenanceFilterOutput { + return i.ToMaintenanceFilterOutputWithContext(context.Background()) } -func (i MaintenanceWindowMetadataArgs) ToMaintenanceWindowMetadataOutputWithContext(ctx context.Context) MaintenanceWindowMetadataOutput { - return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowMetadataOutput) +func (i MaintenanceFilterArgs) ToMaintenanceFilterOutputWithContext(ctx context.Context) MaintenanceFilterOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceFilterOutput) } -func (i MaintenanceWindowMetadataArgs) ToMaintenanceWindowMetadataPtrOutput() MaintenanceWindowMetadataPtrOutput { - return i.ToMaintenanceWindowMetadataPtrOutputWithContext(context.Background()) +// MaintenanceFilterArrayInput is an input type that accepts MaintenanceFilterArray and MaintenanceFilterArrayOutput values. +// You can construct a concrete instance of `MaintenanceFilterArrayInput` via: +// +// MaintenanceFilterArray{ MaintenanceFilterArgs{...} } +type MaintenanceFilterArrayInput interface { + pulumi.Input + + ToMaintenanceFilterArrayOutput() MaintenanceFilterArrayOutput + ToMaintenanceFilterArrayOutputWithContext(context.Context) MaintenanceFilterArrayOutput } -func (i MaintenanceWindowMetadataArgs) ToMaintenanceWindowMetadataPtrOutputWithContext(ctx context.Context) MaintenanceWindowMetadataPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowMetadataOutput).ToMaintenanceWindowMetadataPtrOutputWithContext(ctx) +type MaintenanceFilterArray []MaintenanceFilterInput + +func (MaintenanceFilterArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]MaintenanceFilter)(nil)).Elem() } -// MaintenanceWindowMetadataPtrInput is an input type that accepts MaintenanceWindowMetadataArgs, MaintenanceWindowMetadataPtr and MaintenanceWindowMetadataPtrOutput values. -// You can construct a concrete instance of `MaintenanceWindowMetadataPtrInput` via: -// -// MaintenanceWindowMetadataArgs{...} -// -// or: -// -// nil -type MaintenanceWindowMetadataPtrInput interface { - pulumi.Input +func (i MaintenanceFilterArray) ToMaintenanceFilterArrayOutput() MaintenanceFilterArrayOutput { + return i.ToMaintenanceFilterArrayOutputWithContext(context.Background()) +} - ToMaintenanceWindowMetadataPtrOutput() MaintenanceWindowMetadataPtrOutput - ToMaintenanceWindowMetadataPtrOutputWithContext(context.Context) MaintenanceWindowMetadataPtrOutput +func (i MaintenanceFilterArray) ToMaintenanceFilterArrayOutputWithContext(ctx context.Context) MaintenanceFilterArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceFilterArrayOutput) } -type maintenanceWindowMetadataPtrType MaintenanceWindowMetadataArgs +type MaintenanceFilterOutput struct{ *pulumi.OutputState } -func MaintenanceWindowMetadataPtr(v *MaintenanceWindowMetadataArgs) MaintenanceWindowMetadataPtrInput { - return (*maintenanceWindowMetadataPtrType)(v) +func (MaintenanceFilterOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceFilter)(nil)).Elem() } -func (*maintenanceWindowMetadataPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**MaintenanceWindowMetadata)(nil)).Elem() +func (o MaintenanceFilterOutput) ToMaintenanceFilterOutput() MaintenanceFilterOutput { + return o } -func (i *maintenanceWindowMetadataPtrType) ToMaintenanceWindowMetadataPtrOutput() MaintenanceWindowMetadataPtrOutput { - return i.ToMaintenanceWindowMetadataPtrOutputWithContext(context.Background()) +func (o MaintenanceFilterOutput) ToMaintenanceFilterOutputWithContext(ctx context.Context) MaintenanceFilterOutput { + return o } -func (i *maintenanceWindowMetadataPtrType) ToMaintenanceWindowMetadataPtrOutputWithContext(ctx context.Context) MaintenanceWindowMetadataPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowMetadataPtrOutput) +// A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies +func (o MaintenanceFilterOutput) Filters() MaintenanceFilterFilterArrayOutput { + return o.ApplyT(func(v MaintenanceFilter) []MaintenanceFilterFilter { return v.Filters }).(MaintenanceFilterFilterArrayOutput) } -type MaintenanceWindowMetadataOutput struct{ *pulumi.OutputState } +type MaintenanceFilterArrayOutput struct{ *pulumi.OutputState } -func (MaintenanceWindowMetadataOutput) ElementType() reflect.Type { - return reflect.TypeOf((*MaintenanceWindowMetadata)(nil)).Elem() +func (MaintenanceFilterArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]MaintenanceFilter)(nil)).Elem() } -func (o MaintenanceWindowMetadataOutput) ToMaintenanceWindowMetadataOutput() MaintenanceWindowMetadataOutput { +func (o MaintenanceFilterArrayOutput) ToMaintenanceFilterArrayOutput() MaintenanceFilterArrayOutput { return o } -func (o MaintenanceWindowMetadataOutput) ToMaintenanceWindowMetadataOutputWithContext(ctx context.Context) MaintenanceWindowMetadataOutput { +func (o MaintenanceFilterArrayOutput) ToMaintenanceFilterArrayOutputWithContext(ctx context.Context) MaintenanceFilterArrayOutput { return o } -func (o MaintenanceWindowMetadataOutput) ToMaintenanceWindowMetadataPtrOutput() MaintenanceWindowMetadataPtrOutput { - return o.ToMaintenanceWindowMetadataPtrOutputWithContext(context.Background()) +func (o MaintenanceFilterArrayOutput) Index(i pulumi.IntInput) MaintenanceFilterOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) MaintenanceFilter { + return vs[0].([]MaintenanceFilter)[vs[1].(int)] + }).(MaintenanceFilterOutput) } -func (o MaintenanceWindowMetadataOutput) ToMaintenanceWindowMetadataPtrOutputWithContext(ctx context.Context) MaintenanceWindowMetadataPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceWindowMetadata) *MaintenanceWindowMetadata { - return &v - }).(MaintenanceWindowMetadataPtrOutput) +type MaintenanceFilterFilter struct { + EntityId *string `pulumi:"entityId"` + EntityTags []string `pulumi:"entityTags"` + EntityType *string `pulumi:"entityType"` + ManagementZones []string `pulumi:"managementZones"` } -// Dynatrace server version -func (o MaintenanceWindowMetadataOutput) ClusterVersion() pulumi.StringPtrOutput { - return o.ApplyT(func(v MaintenanceWindowMetadata) *string { return v.ClusterVersion }).(pulumi.StringPtrOutput) +// MaintenanceFilterFilterInput is an input type that accepts MaintenanceFilterFilterArgs and MaintenanceFilterFilterOutput values. +// You can construct a concrete instance of `MaintenanceFilterFilterInput` via: +// +// MaintenanceFilterFilterArgs{...} +type MaintenanceFilterFilterInput interface { + pulumi.Input + + ToMaintenanceFilterFilterOutput() MaintenanceFilterFilterOutput + ToMaintenanceFilterFilterOutputWithContext(context.Context) MaintenanceFilterFilterOutput } -// A Sorted list of the version numbers of the configuration -func (o MaintenanceWindowMetadataOutput) ConfigurationVersions() pulumi.IntArrayOutput { - return o.ApplyT(func(v MaintenanceWindowMetadata) []int { return v.ConfigurationVersions }).(pulumi.IntArrayOutput) +type MaintenanceFilterFilterArgs struct { + EntityId pulumi.StringPtrInput `pulumi:"entityId"` + EntityTags pulumi.StringArrayInput `pulumi:"entityTags"` + EntityType pulumi.StringPtrInput `pulumi:"entityType"` + ManagementZones pulumi.StringArrayInput `pulumi:"managementZones"` } -// A Sorted list of the version numbers of the configuration -func (o MaintenanceWindowMetadataOutput) CurrentConfigurationVersions() pulumi.StringArrayOutput { - return o.ApplyT(func(v MaintenanceWindowMetadata) []string { return v.CurrentConfigurationVersions }).(pulumi.StringArrayOutput) +func (MaintenanceFilterFilterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceFilterFilter)(nil)).Elem() } -type MaintenanceWindowMetadataPtrOutput struct{ *pulumi.OutputState } +func (i MaintenanceFilterFilterArgs) ToMaintenanceFilterFilterOutput() MaintenanceFilterFilterOutput { + return i.ToMaintenanceFilterFilterOutputWithContext(context.Background()) +} -func (MaintenanceWindowMetadataPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**MaintenanceWindowMetadata)(nil)).Elem() +func (i MaintenanceFilterFilterArgs) ToMaintenanceFilterFilterOutputWithContext(ctx context.Context) MaintenanceFilterFilterOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceFilterFilterOutput) } -func (o MaintenanceWindowMetadataPtrOutput) ToMaintenanceWindowMetadataPtrOutput() MaintenanceWindowMetadataPtrOutput { +// MaintenanceFilterFilterArrayInput is an input type that accepts MaintenanceFilterFilterArray and MaintenanceFilterFilterArrayOutput values. +// You can construct a concrete instance of `MaintenanceFilterFilterArrayInput` via: +// +// MaintenanceFilterFilterArray{ MaintenanceFilterFilterArgs{...} } +type MaintenanceFilterFilterArrayInput interface { + pulumi.Input + + ToMaintenanceFilterFilterArrayOutput() MaintenanceFilterFilterArrayOutput + ToMaintenanceFilterFilterArrayOutputWithContext(context.Context) MaintenanceFilterFilterArrayOutput +} + +type MaintenanceFilterFilterArray []MaintenanceFilterFilterInput + +func (MaintenanceFilterFilterArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]MaintenanceFilterFilter)(nil)).Elem() +} + +func (i MaintenanceFilterFilterArray) ToMaintenanceFilterFilterArrayOutput() MaintenanceFilterFilterArrayOutput { + return i.ToMaintenanceFilterFilterArrayOutputWithContext(context.Background()) +} + +func (i MaintenanceFilterFilterArray) ToMaintenanceFilterFilterArrayOutputWithContext(ctx context.Context) MaintenanceFilterFilterArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceFilterFilterArrayOutput) +} + +type MaintenanceFilterFilterOutput struct{ *pulumi.OutputState } + +func (MaintenanceFilterFilterOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceFilterFilter)(nil)).Elem() +} + +func (o MaintenanceFilterFilterOutput) ToMaintenanceFilterFilterOutput() MaintenanceFilterFilterOutput { return o } -func (o MaintenanceWindowMetadataPtrOutput) ToMaintenanceWindowMetadataPtrOutputWithContext(ctx context.Context) MaintenanceWindowMetadataPtrOutput { +func (o MaintenanceFilterFilterOutput) ToMaintenanceFilterFilterOutputWithContext(ctx context.Context) MaintenanceFilterFilterOutput { return o } -func (o MaintenanceWindowMetadataPtrOutput) Elem() MaintenanceWindowMetadataOutput { - return o.ApplyT(func(v *MaintenanceWindowMetadata) MaintenanceWindowMetadata { - if v != nil { - return *v - } - var ret MaintenanceWindowMetadata - return ret - }).(MaintenanceWindowMetadataOutput) +func (o MaintenanceFilterFilterOutput) EntityId() pulumi.StringPtrOutput { + return o.ApplyT(func(v MaintenanceFilterFilter) *string { return v.EntityId }).(pulumi.StringPtrOutput) } -// Dynatrace server version -func (o MaintenanceWindowMetadataPtrOutput) ClusterVersion() pulumi.StringPtrOutput { - return o.ApplyT(func(v *MaintenanceWindowMetadata) *string { - if v == nil { - return nil - } - return v.ClusterVersion - }).(pulumi.StringPtrOutput) +func (o MaintenanceFilterFilterOutput) EntityTags() pulumi.StringArrayOutput { + return o.ApplyT(func(v MaintenanceFilterFilter) []string { return v.EntityTags }).(pulumi.StringArrayOutput) } -// A Sorted list of the version numbers of the configuration -func (o MaintenanceWindowMetadataPtrOutput) ConfigurationVersions() pulumi.IntArrayOutput { - return o.ApplyT(func(v *MaintenanceWindowMetadata) []int { - if v == nil { - return nil - } - return v.ConfigurationVersions - }).(pulumi.IntArrayOutput) +func (o MaintenanceFilterFilterOutput) EntityType() pulumi.StringPtrOutput { + return o.ApplyT(func(v MaintenanceFilterFilter) *string { return v.EntityType }).(pulumi.StringPtrOutput) } -// A Sorted list of the version numbers of the configuration -func (o MaintenanceWindowMetadataPtrOutput) CurrentConfigurationVersions() pulumi.StringArrayOutput { - return o.ApplyT(func(v *MaintenanceWindowMetadata) []string { - if v == nil { - return nil - } - return v.CurrentConfigurationVersions - }).(pulumi.StringArrayOutput) +func (o MaintenanceFilterFilterOutput) ManagementZones() pulumi.StringArrayOutput { + return o.ApplyT(func(v MaintenanceFilterFilter) []string { return v.ManagementZones }).(pulumi.StringArrayOutput) } -type MaintenanceWindowSchedule struct { - // The end date and time of the maintenance window validity period in yyyy-mm-dd HH:mm format - End string `pulumi:"end"` - // The recurrence of the maintenance window - Recurrence *MaintenanceWindowScheduleRecurrence `pulumi:"recurrence"` - // The type of the schedule recurrence. Possible values are `DAILY`, `MONTHLY`, `ONCE` and `WEEKLY` - RecurrenceType string `pulumi:"recurrenceType"` - // The start date and time of the maintenance window validity period in yyyy-mm-dd HH:mm format - Start string `pulumi:"start"` - // allows for configuring properties that are not explicitly supported by the current version of this provider - Unknowns *string `pulumi:"unknowns"` - // The time zone of the start and end time. Default time zone is UTC. You can use either UTC offset `UTC+01:00` format or the IANA Time Zone Database format (for example, `Europe/Vienna`) - ZoneId string `pulumi:"zoneId"` +type MaintenanceFilterFilterArrayOutput struct{ *pulumi.OutputState } + +func (MaintenanceFilterFilterArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]MaintenanceFilterFilter)(nil)).Elem() } -// MaintenanceWindowScheduleInput is an input type that accepts MaintenanceWindowScheduleArgs and MaintenanceWindowScheduleOutput values. -// You can construct a concrete instance of `MaintenanceWindowScheduleInput` via: +func (o MaintenanceFilterFilterArrayOutput) ToMaintenanceFilterFilterArrayOutput() MaintenanceFilterFilterArrayOutput { + return o +} + +func (o MaintenanceFilterFilterArrayOutput) ToMaintenanceFilterFilterArrayOutputWithContext(ctx context.Context) MaintenanceFilterFilterArrayOutput { + return o +} + +func (o MaintenanceFilterFilterArrayOutput) Index(i pulumi.IntInput) MaintenanceFilterFilterOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) MaintenanceFilterFilter { + return vs[0].([]MaintenanceFilterFilter)[vs[1].(int)] + }).(MaintenanceFilterFilterOutput) +} + +type MaintenanceGeneralProperties struct { + // A short description of the maintenance purpose + Description *string `pulumi:"description"` + // Suppress execution of synthetic monitors during the maintenance + DisableSynthetic *bool `pulumi:"disableSynthetic"` + // The name of the maintenance window, displayed in the UI + Name string `pulumi:"name"` + // The type of suppression of alerting and problem detection during the maintenance + Suppression string `pulumi:"suppression"` + // The type of the maintenance: planned or unplanned + Type string `pulumi:"type"` +} + +// MaintenanceGeneralPropertiesInput is an input type that accepts MaintenanceGeneralPropertiesArgs and MaintenanceGeneralPropertiesOutput values. +// You can construct a concrete instance of `MaintenanceGeneralPropertiesInput` via: // -// MaintenanceWindowScheduleArgs{...} -type MaintenanceWindowScheduleInput interface { +// MaintenanceGeneralPropertiesArgs{...} +type MaintenanceGeneralPropertiesInput interface { pulumi.Input - ToMaintenanceWindowScheduleOutput() MaintenanceWindowScheduleOutput - ToMaintenanceWindowScheduleOutputWithContext(context.Context) MaintenanceWindowScheduleOutput + ToMaintenanceGeneralPropertiesOutput() MaintenanceGeneralPropertiesOutput + ToMaintenanceGeneralPropertiesOutputWithContext(context.Context) MaintenanceGeneralPropertiesOutput } -type MaintenanceWindowScheduleArgs struct { - // The end date and time of the maintenance window validity period in yyyy-mm-dd HH:mm format - End pulumi.StringInput `pulumi:"end"` - // The recurrence of the maintenance window - Recurrence MaintenanceWindowScheduleRecurrencePtrInput `pulumi:"recurrence"` - // The type of the schedule recurrence. Possible values are `DAILY`, `MONTHLY`, `ONCE` and `WEEKLY` - RecurrenceType pulumi.StringInput `pulumi:"recurrenceType"` - // The start date and time of the maintenance window validity period in yyyy-mm-dd HH:mm format - Start pulumi.StringInput `pulumi:"start"` - // allows for configuring properties that are not explicitly supported by the current version of this provider - Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` - // The time zone of the start and end time. Default time zone is UTC. You can use either UTC offset `UTC+01:00` format or the IANA Time Zone Database format (for example, `Europe/Vienna`) - ZoneId pulumi.StringInput `pulumi:"zoneId"` +type MaintenanceGeneralPropertiesArgs struct { + // A short description of the maintenance purpose + Description pulumi.StringPtrInput `pulumi:"description"` + // Suppress execution of synthetic monitors during the maintenance + DisableSynthetic pulumi.BoolPtrInput `pulumi:"disableSynthetic"` + // The name of the maintenance window, displayed in the UI + Name pulumi.StringInput `pulumi:"name"` + // The type of suppression of alerting and problem detection during the maintenance + Suppression pulumi.StringInput `pulumi:"suppression"` + // The type of the maintenance: planned or unplanned + Type pulumi.StringInput `pulumi:"type"` } -func (MaintenanceWindowScheduleArgs) ElementType() reflect.Type { - return reflect.TypeOf((*MaintenanceWindowSchedule)(nil)).Elem() +func (MaintenanceGeneralPropertiesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceGeneralProperties)(nil)).Elem() } -func (i MaintenanceWindowScheduleArgs) ToMaintenanceWindowScheduleOutput() MaintenanceWindowScheduleOutput { - return i.ToMaintenanceWindowScheduleOutputWithContext(context.Background()) +func (i MaintenanceGeneralPropertiesArgs) ToMaintenanceGeneralPropertiesOutput() MaintenanceGeneralPropertiesOutput { + return i.ToMaintenanceGeneralPropertiesOutputWithContext(context.Background()) } -func (i MaintenanceWindowScheduleArgs) ToMaintenanceWindowScheduleOutputWithContext(ctx context.Context) MaintenanceWindowScheduleOutput { - return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScheduleOutput) +func (i MaintenanceGeneralPropertiesArgs) ToMaintenanceGeneralPropertiesOutputWithContext(ctx context.Context) MaintenanceGeneralPropertiesOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceGeneralPropertiesOutput) } -func (i MaintenanceWindowScheduleArgs) ToMaintenanceWindowSchedulePtrOutput() MaintenanceWindowSchedulePtrOutput { - return i.ToMaintenanceWindowSchedulePtrOutputWithContext(context.Background()) +func (i MaintenanceGeneralPropertiesArgs) ToMaintenanceGeneralPropertiesPtrOutput() MaintenanceGeneralPropertiesPtrOutput { + return i.ToMaintenanceGeneralPropertiesPtrOutputWithContext(context.Background()) } -func (i MaintenanceWindowScheduleArgs) ToMaintenanceWindowSchedulePtrOutputWithContext(ctx context.Context) MaintenanceWindowSchedulePtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScheduleOutput).ToMaintenanceWindowSchedulePtrOutputWithContext(ctx) +func (i MaintenanceGeneralPropertiesArgs) ToMaintenanceGeneralPropertiesPtrOutputWithContext(ctx context.Context) MaintenanceGeneralPropertiesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceGeneralPropertiesOutput).ToMaintenanceGeneralPropertiesPtrOutputWithContext(ctx) } -// MaintenanceWindowSchedulePtrInput is an input type that accepts MaintenanceWindowScheduleArgs, MaintenanceWindowSchedulePtr and MaintenanceWindowSchedulePtrOutput values. -// You can construct a concrete instance of `MaintenanceWindowSchedulePtrInput` via: +// MaintenanceGeneralPropertiesPtrInput is an input type that accepts MaintenanceGeneralPropertiesArgs, MaintenanceGeneralPropertiesPtr and MaintenanceGeneralPropertiesPtrOutput values. +// You can construct a concrete instance of `MaintenanceGeneralPropertiesPtrInput` via: // -// MaintenanceWindowScheduleArgs{...} +// MaintenanceGeneralPropertiesArgs{...} // // or: // // nil -type MaintenanceWindowSchedulePtrInput interface { +type MaintenanceGeneralPropertiesPtrInput interface { pulumi.Input - ToMaintenanceWindowSchedulePtrOutput() MaintenanceWindowSchedulePtrOutput - ToMaintenanceWindowSchedulePtrOutputWithContext(context.Context) MaintenanceWindowSchedulePtrOutput + ToMaintenanceGeneralPropertiesPtrOutput() MaintenanceGeneralPropertiesPtrOutput + ToMaintenanceGeneralPropertiesPtrOutputWithContext(context.Context) MaintenanceGeneralPropertiesPtrOutput } -type maintenanceWindowSchedulePtrType MaintenanceWindowScheduleArgs +type maintenanceGeneralPropertiesPtrType MaintenanceGeneralPropertiesArgs -func MaintenanceWindowSchedulePtr(v *MaintenanceWindowScheduleArgs) MaintenanceWindowSchedulePtrInput { - return (*maintenanceWindowSchedulePtrType)(v) +func MaintenanceGeneralPropertiesPtr(v *MaintenanceGeneralPropertiesArgs) MaintenanceGeneralPropertiesPtrInput { + return (*maintenanceGeneralPropertiesPtrType)(v) } -func (*maintenanceWindowSchedulePtrType) ElementType() reflect.Type { - return reflect.TypeOf((**MaintenanceWindowSchedule)(nil)).Elem() +func (*maintenanceGeneralPropertiesPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceGeneralProperties)(nil)).Elem() } -func (i *maintenanceWindowSchedulePtrType) ToMaintenanceWindowSchedulePtrOutput() MaintenanceWindowSchedulePtrOutput { - return i.ToMaintenanceWindowSchedulePtrOutputWithContext(context.Background()) +func (i *maintenanceGeneralPropertiesPtrType) ToMaintenanceGeneralPropertiesPtrOutput() MaintenanceGeneralPropertiesPtrOutput { + return i.ToMaintenanceGeneralPropertiesPtrOutputWithContext(context.Background()) } -func (i *maintenanceWindowSchedulePtrType) ToMaintenanceWindowSchedulePtrOutputWithContext(ctx context.Context) MaintenanceWindowSchedulePtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowSchedulePtrOutput) +func (i *maintenanceGeneralPropertiesPtrType) ToMaintenanceGeneralPropertiesPtrOutputWithContext(ctx context.Context) MaintenanceGeneralPropertiesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceGeneralPropertiesPtrOutput) } -type MaintenanceWindowScheduleOutput struct{ *pulumi.OutputState } +type MaintenanceGeneralPropertiesOutput struct{ *pulumi.OutputState } -func (MaintenanceWindowScheduleOutput) ElementType() reflect.Type { - return reflect.TypeOf((*MaintenanceWindowSchedule)(nil)).Elem() +func (MaintenanceGeneralPropertiesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceGeneralProperties)(nil)).Elem() } -func (o MaintenanceWindowScheduleOutput) ToMaintenanceWindowScheduleOutput() MaintenanceWindowScheduleOutput { +func (o MaintenanceGeneralPropertiesOutput) ToMaintenanceGeneralPropertiesOutput() MaintenanceGeneralPropertiesOutput { return o } -func (o MaintenanceWindowScheduleOutput) ToMaintenanceWindowScheduleOutputWithContext(ctx context.Context) MaintenanceWindowScheduleOutput { +func (o MaintenanceGeneralPropertiesOutput) ToMaintenanceGeneralPropertiesOutputWithContext(ctx context.Context) MaintenanceGeneralPropertiesOutput { return o } -func (o MaintenanceWindowScheduleOutput) ToMaintenanceWindowSchedulePtrOutput() MaintenanceWindowSchedulePtrOutput { - return o.ToMaintenanceWindowSchedulePtrOutputWithContext(context.Background()) +func (o MaintenanceGeneralPropertiesOutput) ToMaintenanceGeneralPropertiesPtrOutput() MaintenanceGeneralPropertiesPtrOutput { + return o.ToMaintenanceGeneralPropertiesPtrOutputWithContext(context.Background()) } -func (o MaintenanceWindowScheduleOutput) ToMaintenanceWindowSchedulePtrOutputWithContext(ctx context.Context) MaintenanceWindowSchedulePtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceWindowSchedule) *MaintenanceWindowSchedule { +func (o MaintenanceGeneralPropertiesOutput) ToMaintenanceGeneralPropertiesPtrOutputWithContext(ctx context.Context) MaintenanceGeneralPropertiesPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceGeneralProperties) *MaintenanceGeneralProperties { return &v - }).(MaintenanceWindowSchedulePtrOutput) -} - -// The end date and time of the maintenance window validity period in yyyy-mm-dd HH:mm format -func (o MaintenanceWindowScheduleOutput) End() pulumi.StringOutput { - return o.ApplyT(func(v MaintenanceWindowSchedule) string { return v.End }).(pulumi.StringOutput) + }).(MaintenanceGeneralPropertiesPtrOutput) } -// The recurrence of the maintenance window -func (o MaintenanceWindowScheduleOutput) Recurrence() MaintenanceWindowScheduleRecurrencePtrOutput { - return o.ApplyT(func(v MaintenanceWindowSchedule) *MaintenanceWindowScheduleRecurrence { return v.Recurrence }).(MaintenanceWindowScheduleRecurrencePtrOutput) +// A short description of the maintenance purpose +func (o MaintenanceGeneralPropertiesOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v MaintenanceGeneralProperties) *string { return v.Description }).(pulumi.StringPtrOutput) } -// The type of the schedule recurrence. Possible values are `DAILY`, `MONTHLY`, `ONCE` and `WEEKLY` -func (o MaintenanceWindowScheduleOutput) RecurrenceType() pulumi.StringOutput { - return o.ApplyT(func(v MaintenanceWindowSchedule) string { return v.RecurrenceType }).(pulumi.StringOutput) +// Suppress execution of synthetic monitors during the maintenance +func (o MaintenanceGeneralPropertiesOutput) DisableSynthetic() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MaintenanceGeneralProperties) *bool { return v.DisableSynthetic }).(pulumi.BoolPtrOutput) } -// The start date and time of the maintenance window validity period in yyyy-mm-dd HH:mm format -func (o MaintenanceWindowScheduleOutput) Start() pulumi.StringOutput { - return o.ApplyT(func(v MaintenanceWindowSchedule) string { return v.Start }).(pulumi.StringOutput) +// The name of the maintenance window, displayed in the UI +func (o MaintenanceGeneralPropertiesOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceGeneralProperties) string { return v.Name }).(pulumi.StringOutput) } -// allows for configuring properties that are not explicitly supported by the current version of this provider -func (o MaintenanceWindowScheduleOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v MaintenanceWindowSchedule) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +// The type of suppression of alerting and problem detection during the maintenance +func (o MaintenanceGeneralPropertiesOutput) Suppression() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceGeneralProperties) string { return v.Suppression }).(pulumi.StringOutput) } -// The time zone of the start and end time. Default time zone is UTC. You can use either UTC offset `UTC+01:00` format or the IANA Time Zone Database format (for example, `Europe/Vienna`) -func (o MaintenanceWindowScheduleOutput) ZoneId() pulumi.StringOutput { - return o.ApplyT(func(v MaintenanceWindowSchedule) string { return v.ZoneId }).(pulumi.StringOutput) +// The type of the maintenance: planned or unplanned +func (o MaintenanceGeneralPropertiesOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceGeneralProperties) string { return v.Type }).(pulumi.StringOutput) } -type MaintenanceWindowSchedulePtrOutput struct{ *pulumi.OutputState } +type MaintenanceGeneralPropertiesPtrOutput struct{ *pulumi.OutputState } -func (MaintenanceWindowSchedulePtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**MaintenanceWindowSchedule)(nil)).Elem() +func (MaintenanceGeneralPropertiesPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceGeneralProperties)(nil)).Elem() } -func (o MaintenanceWindowSchedulePtrOutput) ToMaintenanceWindowSchedulePtrOutput() MaintenanceWindowSchedulePtrOutput { +func (o MaintenanceGeneralPropertiesPtrOutput) ToMaintenanceGeneralPropertiesPtrOutput() MaintenanceGeneralPropertiesPtrOutput { return o } -func (o MaintenanceWindowSchedulePtrOutput) ToMaintenanceWindowSchedulePtrOutputWithContext(ctx context.Context) MaintenanceWindowSchedulePtrOutput { +func (o MaintenanceGeneralPropertiesPtrOutput) ToMaintenanceGeneralPropertiesPtrOutputWithContext(ctx context.Context) MaintenanceGeneralPropertiesPtrOutput { return o } -func (o MaintenanceWindowSchedulePtrOutput) Elem() MaintenanceWindowScheduleOutput { - return o.ApplyT(func(v *MaintenanceWindowSchedule) MaintenanceWindowSchedule { +func (o MaintenanceGeneralPropertiesPtrOutput) Elem() MaintenanceGeneralPropertiesOutput { + return o.ApplyT(func(v *MaintenanceGeneralProperties) MaintenanceGeneralProperties { if v != nil { return *v } - var ret MaintenanceWindowSchedule + var ret MaintenanceGeneralProperties return ret - }).(MaintenanceWindowScheduleOutput) + }).(MaintenanceGeneralPropertiesOutput) } -// The end date and time of the maintenance window validity period in yyyy-mm-dd HH:mm format -func (o MaintenanceWindowSchedulePtrOutput) End() pulumi.StringPtrOutput { - return o.ApplyT(func(v *MaintenanceWindowSchedule) *string { +// A short description of the maintenance purpose +func (o MaintenanceGeneralPropertiesPtrOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceGeneralProperties) *string { if v == nil { return nil } - return &v.End + return v.Description }).(pulumi.StringPtrOutput) } -// The recurrence of the maintenance window -func (o MaintenanceWindowSchedulePtrOutput) Recurrence() MaintenanceWindowScheduleRecurrencePtrOutput { - return o.ApplyT(func(v *MaintenanceWindowSchedule) *MaintenanceWindowScheduleRecurrence { - if v == nil { - return nil - } - return v.Recurrence - }).(MaintenanceWindowScheduleRecurrencePtrOutput) -} - -// The type of the schedule recurrence. Possible values are `DAILY`, `MONTHLY`, `ONCE` and `WEEKLY` -func (o MaintenanceWindowSchedulePtrOutput) RecurrenceType() pulumi.StringPtrOutput { - return o.ApplyT(func(v *MaintenanceWindowSchedule) *string { +// Suppress execution of synthetic monitors during the maintenance +func (o MaintenanceGeneralPropertiesPtrOutput) DisableSynthetic() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MaintenanceGeneralProperties) *bool { if v == nil { return nil } - return &v.RecurrenceType - }).(pulumi.StringPtrOutput) + return v.DisableSynthetic + }).(pulumi.BoolPtrOutput) } -// The start date and time of the maintenance window validity period in yyyy-mm-dd HH:mm format -func (o MaintenanceWindowSchedulePtrOutput) Start() pulumi.StringPtrOutput { - return o.ApplyT(func(v *MaintenanceWindowSchedule) *string { +// The name of the maintenance window, displayed in the UI +func (o MaintenanceGeneralPropertiesPtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceGeneralProperties) *string { if v == nil { return nil } - return &v.Start + return &v.Name }).(pulumi.StringPtrOutput) } -// allows for configuring properties that are not explicitly supported by the current version of this provider -func (o MaintenanceWindowSchedulePtrOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v *MaintenanceWindowSchedule) *string { +// The type of suppression of alerting and problem detection during the maintenance +func (o MaintenanceGeneralPropertiesPtrOutput) Suppression() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceGeneralProperties) *string { if v == nil { return nil } - return v.Unknowns + return &v.Suppression }).(pulumi.StringPtrOutput) } -// The time zone of the start and end time. Default time zone is UTC. You can use either UTC offset `UTC+01:00` format or the IANA Time Zone Database format (for example, `Europe/Vienna`) -func (o MaintenanceWindowSchedulePtrOutput) ZoneId() pulumi.StringPtrOutput { - return o.ApplyT(func(v *MaintenanceWindowSchedule) *string { +// The type of the maintenance: planned or unplanned +func (o MaintenanceGeneralPropertiesPtrOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceGeneralProperties) *string { if v == nil { return nil } - return &v.ZoneId + return &v.Type }).(pulumi.StringPtrOutput) } -type MaintenanceWindowScheduleRecurrence struct { - DayOfMonth *int `pulumi:"dayOfMonth"` - DayOfWeek *string `pulumi:"dayOfWeek"` - DurationMinutes int `pulumi:"durationMinutes"` - StartTime string `pulumi:"startTime"` - // allows for configuring properties that are not explicitly supported by the current version of this provider - Unknowns *string `pulumi:"unknowns"` +type MaintenanceSchedule struct { + // The configuration for maintenance windows occuring daily + DailyRecurrence *MaintenanceScheduleDailyRecurrence `pulumi:"dailyRecurrence"` + // The configuration for maintenance windows occuring monthly + MonthlyRecurrence *MaintenanceScheduleMonthlyRecurrence `pulumi:"monthlyRecurrence"` + // The configuration for maintenance windows occuring once + OnceRecurrence *MaintenanceScheduleOnceRecurrence `pulumi:"onceRecurrence"` + // The time window of the maintenance window + Type string `pulumi:"type"` + // The configuration for maintenance windows occuring weekly + WeeklyRecurrence *MaintenanceScheduleWeeklyRecurrence `pulumi:"weeklyRecurrence"` } -// MaintenanceWindowScheduleRecurrenceInput is an input type that accepts MaintenanceWindowScheduleRecurrenceArgs and MaintenanceWindowScheduleRecurrenceOutput values. -// You can construct a concrete instance of `MaintenanceWindowScheduleRecurrenceInput` via: +// MaintenanceScheduleInput is an input type that accepts MaintenanceScheduleArgs and MaintenanceScheduleOutput values. +// You can construct a concrete instance of `MaintenanceScheduleInput` via: // -// MaintenanceWindowScheduleRecurrenceArgs{...} -type MaintenanceWindowScheduleRecurrenceInput interface { +// MaintenanceScheduleArgs{...} +type MaintenanceScheduleInput interface { pulumi.Input - ToMaintenanceWindowScheduleRecurrenceOutput() MaintenanceWindowScheduleRecurrenceOutput - ToMaintenanceWindowScheduleRecurrenceOutputWithContext(context.Context) MaintenanceWindowScheduleRecurrenceOutput + ToMaintenanceScheduleOutput() MaintenanceScheduleOutput + ToMaintenanceScheduleOutputWithContext(context.Context) MaintenanceScheduleOutput } -type MaintenanceWindowScheduleRecurrenceArgs struct { - DayOfMonth pulumi.IntPtrInput `pulumi:"dayOfMonth"` - DayOfWeek pulumi.StringPtrInput `pulumi:"dayOfWeek"` - DurationMinutes pulumi.IntInput `pulumi:"durationMinutes"` - StartTime pulumi.StringInput `pulumi:"startTime"` - // allows for configuring properties that are not explicitly supported by the current version of this provider - Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` +type MaintenanceScheduleArgs struct { + // The configuration for maintenance windows occuring daily + DailyRecurrence MaintenanceScheduleDailyRecurrencePtrInput `pulumi:"dailyRecurrence"` + // The configuration for maintenance windows occuring monthly + MonthlyRecurrence MaintenanceScheduleMonthlyRecurrencePtrInput `pulumi:"monthlyRecurrence"` + // The configuration for maintenance windows occuring once + OnceRecurrence MaintenanceScheduleOnceRecurrencePtrInput `pulumi:"onceRecurrence"` + // The time window of the maintenance window + Type pulumi.StringInput `pulumi:"type"` + // The configuration for maintenance windows occuring weekly + WeeklyRecurrence MaintenanceScheduleWeeklyRecurrencePtrInput `pulumi:"weeklyRecurrence"` } -func (MaintenanceWindowScheduleRecurrenceArgs) ElementType() reflect.Type { - return reflect.TypeOf((*MaintenanceWindowScheduleRecurrence)(nil)).Elem() +func (MaintenanceScheduleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceSchedule)(nil)).Elem() } -func (i MaintenanceWindowScheduleRecurrenceArgs) ToMaintenanceWindowScheduleRecurrenceOutput() MaintenanceWindowScheduleRecurrenceOutput { - return i.ToMaintenanceWindowScheduleRecurrenceOutputWithContext(context.Background()) +func (i MaintenanceScheduleArgs) ToMaintenanceScheduleOutput() MaintenanceScheduleOutput { + return i.ToMaintenanceScheduleOutputWithContext(context.Background()) } -func (i MaintenanceWindowScheduleRecurrenceArgs) ToMaintenanceWindowScheduleRecurrenceOutputWithContext(ctx context.Context) MaintenanceWindowScheduleRecurrenceOutput { - return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScheduleRecurrenceOutput) +func (i MaintenanceScheduleArgs) ToMaintenanceScheduleOutputWithContext(ctx context.Context) MaintenanceScheduleOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleOutput) } -func (i MaintenanceWindowScheduleRecurrenceArgs) ToMaintenanceWindowScheduleRecurrencePtrOutput() MaintenanceWindowScheduleRecurrencePtrOutput { - return i.ToMaintenanceWindowScheduleRecurrencePtrOutputWithContext(context.Background()) +func (i MaintenanceScheduleArgs) ToMaintenanceSchedulePtrOutput() MaintenanceSchedulePtrOutput { + return i.ToMaintenanceSchedulePtrOutputWithContext(context.Background()) } -func (i MaintenanceWindowScheduleRecurrenceArgs) ToMaintenanceWindowScheduleRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceWindowScheduleRecurrencePtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScheduleRecurrenceOutput).ToMaintenanceWindowScheduleRecurrencePtrOutputWithContext(ctx) +func (i MaintenanceScheduleArgs) ToMaintenanceSchedulePtrOutputWithContext(ctx context.Context) MaintenanceSchedulePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleOutput).ToMaintenanceSchedulePtrOutputWithContext(ctx) } -// MaintenanceWindowScheduleRecurrencePtrInput is an input type that accepts MaintenanceWindowScheduleRecurrenceArgs, MaintenanceWindowScheduleRecurrencePtr and MaintenanceWindowScheduleRecurrencePtrOutput values. -// You can construct a concrete instance of `MaintenanceWindowScheduleRecurrencePtrInput` via: +// MaintenanceSchedulePtrInput is an input type that accepts MaintenanceScheduleArgs, MaintenanceSchedulePtr and MaintenanceSchedulePtrOutput values. +// You can construct a concrete instance of `MaintenanceSchedulePtrInput` via: // -// MaintenanceWindowScheduleRecurrenceArgs{...} +// MaintenanceScheduleArgs{...} // // or: // // nil -type MaintenanceWindowScheduleRecurrencePtrInput interface { +type MaintenanceSchedulePtrInput interface { pulumi.Input - ToMaintenanceWindowScheduleRecurrencePtrOutput() MaintenanceWindowScheduleRecurrencePtrOutput - ToMaintenanceWindowScheduleRecurrencePtrOutputWithContext(context.Context) MaintenanceWindowScheduleRecurrencePtrOutput + ToMaintenanceSchedulePtrOutput() MaintenanceSchedulePtrOutput + ToMaintenanceSchedulePtrOutputWithContext(context.Context) MaintenanceSchedulePtrOutput } -type maintenanceWindowScheduleRecurrencePtrType MaintenanceWindowScheduleRecurrenceArgs +type maintenanceSchedulePtrType MaintenanceScheduleArgs -func MaintenanceWindowScheduleRecurrencePtr(v *MaintenanceWindowScheduleRecurrenceArgs) MaintenanceWindowScheduleRecurrencePtrInput { - return (*maintenanceWindowScheduleRecurrencePtrType)(v) +func MaintenanceSchedulePtr(v *MaintenanceScheduleArgs) MaintenanceSchedulePtrInput { + return (*maintenanceSchedulePtrType)(v) } -func (*maintenanceWindowScheduleRecurrencePtrType) ElementType() reflect.Type { - return reflect.TypeOf((**MaintenanceWindowScheduleRecurrence)(nil)).Elem() +func (*maintenanceSchedulePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceSchedule)(nil)).Elem() } -func (i *maintenanceWindowScheduleRecurrencePtrType) ToMaintenanceWindowScheduleRecurrencePtrOutput() MaintenanceWindowScheduleRecurrencePtrOutput { - return i.ToMaintenanceWindowScheduleRecurrencePtrOutputWithContext(context.Background()) +func (i *maintenanceSchedulePtrType) ToMaintenanceSchedulePtrOutput() MaintenanceSchedulePtrOutput { + return i.ToMaintenanceSchedulePtrOutputWithContext(context.Background()) } -func (i *maintenanceWindowScheduleRecurrencePtrType) ToMaintenanceWindowScheduleRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceWindowScheduleRecurrencePtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScheduleRecurrencePtrOutput) +func (i *maintenanceSchedulePtrType) ToMaintenanceSchedulePtrOutputWithContext(ctx context.Context) MaintenanceSchedulePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceSchedulePtrOutput) } -type MaintenanceWindowScheduleRecurrenceOutput struct{ *pulumi.OutputState } +type MaintenanceScheduleOutput struct{ *pulumi.OutputState } -func (MaintenanceWindowScheduleRecurrenceOutput) ElementType() reflect.Type { - return reflect.TypeOf((*MaintenanceWindowScheduleRecurrence)(nil)).Elem() +func (MaintenanceScheduleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceSchedule)(nil)).Elem() } -func (o MaintenanceWindowScheduleRecurrenceOutput) ToMaintenanceWindowScheduleRecurrenceOutput() MaintenanceWindowScheduleRecurrenceOutput { +func (o MaintenanceScheduleOutput) ToMaintenanceScheduleOutput() MaintenanceScheduleOutput { return o } -func (o MaintenanceWindowScheduleRecurrenceOutput) ToMaintenanceWindowScheduleRecurrenceOutputWithContext(ctx context.Context) MaintenanceWindowScheduleRecurrenceOutput { +func (o MaintenanceScheduleOutput) ToMaintenanceScheduleOutputWithContext(ctx context.Context) MaintenanceScheduleOutput { return o } -func (o MaintenanceWindowScheduleRecurrenceOutput) ToMaintenanceWindowScheduleRecurrencePtrOutput() MaintenanceWindowScheduleRecurrencePtrOutput { - return o.ToMaintenanceWindowScheduleRecurrencePtrOutputWithContext(context.Background()) +func (o MaintenanceScheduleOutput) ToMaintenanceSchedulePtrOutput() MaintenanceSchedulePtrOutput { + return o.ToMaintenanceSchedulePtrOutputWithContext(context.Background()) } -func (o MaintenanceWindowScheduleRecurrenceOutput) ToMaintenanceWindowScheduleRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceWindowScheduleRecurrencePtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceWindowScheduleRecurrence) *MaintenanceWindowScheduleRecurrence { +func (o MaintenanceScheduleOutput) ToMaintenanceSchedulePtrOutputWithContext(ctx context.Context) MaintenanceSchedulePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceSchedule) *MaintenanceSchedule { return &v - }).(MaintenanceWindowScheduleRecurrencePtrOutput) + }).(MaintenanceSchedulePtrOutput) } -func (o MaintenanceWindowScheduleRecurrenceOutput) DayOfMonth() pulumi.IntPtrOutput { - return o.ApplyT(func(v MaintenanceWindowScheduleRecurrence) *int { return v.DayOfMonth }).(pulumi.IntPtrOutput) +// The configuration for maintenance windows occuring daily +func (o MaintenanceScheduleOutput) DailyRecurrence() MaintenanceScheduleDailyRecurrencePtrOutput { + return o.ApplyT(func(v MaintenanceSchedule) *MaintenanceScheduleDailyRecurrence { return v.DailyRecurrence }).(MaintenanceScheduleDailyRecurrencePtrOutput) } -func (o MaintenanceWindowScheduleRecurrenceOutput) DayOfWeek() pulumi.StringPtrOutput { - return o.ApplyT(func(v MaintenanceWindowScheduleRecurrence) *string { return v.DayOfWeek }).(pulumi.StringPtrOutput) +// The configuration for maintenance windows occuring monthly +func (o MaintenanceScheduleOutput) MonthlyRecurrence() MaintenanceScheduleMonthlyRecurrencePtrOutput { + return o.ApplyT(func(v MaintenanceSchedule) *MaintenanceScheduleMonthlyRecurrence { return v.MonthlyRecurrence }).(MaintenanceScheduleMonthlyRecurrencePtrOutput) } -func (o MaintenanceWindowScheduleRecurrenceOutput) DurationMinutes() pulumi.IntOutput { - return o.ApplyT(func(v MaintenanceWindowScheduleRecurrence) int { return v.DurationMinutes }).(pulumi.IntOutput) +// The configuration for maintenance windows occuring once +func (o MaintenanceScheduleOutput) OnceRecurrence() MaintenanceScheduleOnceRecurrencePtrOutput { + return o.ApplyT(func(v MaintenanceSchedule) *MaintenanceScheduleOnceRecurrence { return v.OnceRecurrence }).(MaintenanceScheduleOnceRecurrencePtrOutput) } -func (o MaintenanceWindowScheduleRecurrenceOutput) StartTime() pulumi.StringOutput { - return o.ApplyT(func(v MaintenanceWindowScheduleRecurrence) string { return v.StartTime }).(pulumi.StringOutput) +// The time window of the maintenance window +func (o MaintenanceScheduleOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceSchedule) string { return v.Type }).(pulumi.StringOutput) } -// allows for configuring properties that are not explicitly supported by the current version of this provider -func (o MaintenanceWindowScheduleRecurrenceOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v MaintenanceWindowScheduleRecurrence) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +// The configuration for maintenance windows occuring weekly +func (o MaintenanceScheduleOutput) WeeklyRecurrence() MaintenanceScheduleWeeklyRecurrencePtrOutput { + return o.ApplyT(func(v MaintenanceSchedule) *MaintenanceScheduleWeeklyRecurrence { return v.WeeklyRecurrence }).(MaintenanceScheduleWeeklyRecurrencePtrOutput) } -type MaintenanceWindowScheduleRecurrencePtrOutput struct{ *pulumi.OutputState } +type MaintenanceSchedulePtrOutput struct{ *pulumi.OutputState } -func (MaintenanceWindowScheduleRecurrencePtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**MaintenanceWindowScheduleRecurrence)(nil)).Elem() +func (MaintenanceSchedulePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceSchedule)(nil)).Elem() } -func (o MaintenanceWindowScheduleRecurrencePtrOutput) ToMaintenanceWindowScheduleRecurrencePtrOutput() MaintenanceWindowScheduleRecurrencePtrOutput { +func (o MaintenanceSchedulePtrOutput) ToMaintenanceSchedulePtrOutput() MaintenanceSchedulePtrOutput { return o } -func (o MaintenanceWindowScheduleRecurrencePtrOutput) ToMaintenanceWindowScheduleRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceWindowScheduleRecurrencePtrOutput { +func (o MaintenanceSchedulePtrOutput) ToMaintenanceSchedulePtrOutputWithContext(ctx context.Context) MaintenanceSchedulePtrOutput { return o } -func (o MaintenanceWindowScheduleRecurrencePtrOutput) Elem() MaintenanceWindowScheduleRecurrenceOutput { - return o.ApplyT(func(v *MaintenanceWindowScheduleRecurrence) MaintenanceWindowScheduleRecurrence { +func (o MaintenanceSchedulePtrOutput) Elem() MaintenanceScheduleOutput { + return o.ApplyT(func(v *MaintenanceSchedule) MaintenanceSchedule { if v != nil { return *v } - var ret MaintenanceWindowScheduleRecurrence + var ret MaintenanceSchedule return ret - }).(MaintenanceWindowScheduleRecurrenceOutput) + }).(MaintenanceScheduleOutput) } -func (o MaintenanceWindowScheduleRecurrencePtrOutput) DayOfMonth() pulumi.IntPtrOutput { - return o.ApplyT(func(v *MaintenanceWindowScheduleRecurrence) *int { +// The configuration for maintenance windows occuring daily +func (o MaintenanceSchedulePtrOutput) DailyRecurrence() MaintenanceScheduleDailyRecurrencePtrOutput { + return o.ApplyT(func(v *MaintenanceSchedule) *MaintenanceScheduleDailyRecurrence { if v == nil { return nil } - return v.DayOfMonth - }).(pulumi.IntPtrOutput) + return v.DailyRecurrence + }).(MaintenanceScheduleDailyRecurrencePtrOutput) } -func (o MaintenanceWindowScheduleRecurrencePtrOutput) DayOfWeek() pulumi.StringPtrOutput { - return o.ApplyT(func(v *MaintenanceWindowScheduleRecurrence) *string { +// The configuration for maintenance windows occuring monthly +func (o MaintenanceSchedulePtrOutput) MonthlyRecurrence() MaintenanceScheduleMonthlyRecurrencePtrOutput { + return o.ApplyT(func(v *MaintenanceSchedule) *MaintenanceScheduleMonthlyRecurrence { if v == nil { return nil } - return v.DayOfWeek - }).(pulumi.StringPtrOutput) + return v.MonthlyRecurrence + }).(MaintenanceScheduleMonthlyRecurrencePtrOutput) } -func (o MaintenanceWindowScheduleRecurrencePtrOutput) DurationMinutes() pulumi.IntPtrOutput { - return o.ApplyT(func(v *MaintenanceWindowScheduleRecurrence) *int { +// The configuration for maintenance windows occuring once +func (o MaintenanceSchedulePtrOutput) OnceRecurrence() MaintenanceScheduleOnceRecurrencePtrOutput { + return o.ApplyT(func(v *MaintenanceSchedule) *MaintenanceScheduleOnceRecurrence { if v == nil { return nil } - return &v.DurationMinutes - }).(pulumi.IntPtrOutput) + return v.OnceRecurrence + }).(MaintenanceScheduleOnceRecurrencePtrOutput) } -func (o MaintenanceWindowScheduleRecurrencePtrOutput) StartTime() pulumi.StringPtrOutput { - return o.ApplyT(func(v *MaintenanceWindowScheduleRecurrence) *string { +// The time window of the maintenance window +func (o MaintenanceSchedulePtrOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceSchedule) *string { if v == nil { return nil } - return &v.StartTime + return &v.Type }).(pulumi.StringPtrOutput) } -// allows for configuring properties that are not explicitly supported by the current version of this provider -func (o MaintenanceWindowScheduleRecurrencePtrOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v *MaintenanceWindowScheduleRecurrence) *string { +// The configuration for maintenance windows occuring weekly +func (o MaintenanceSchedulePtrOutput) WeeklyRecurrence() MaintenanceScheduleWeeklyRecurrencePtrOutput { + return o.ApplyT(func(v *MaintenanceSchedule) *MaintenanceScheduleWeeklyRecurrence { if v == nil { return nil } - return v.Unknowns - }).(pulumi.StringPtrOutput) + return v.WeeklyRecurrence + }).(MaintenanceScheduleWeeklyRecurrencePtrOutput) } -type MaintenanceWindowScope struct { - // A list of Dynatrace entities (for example, hosts or services) to be included in the scope. Allowed values are Dynatrace entity IDs - Entities []string `pulumi:"entities"` - // A list of matching rules for dynamic scope formation. If several rules are set, the OR logic applies - Matches []MaintenanceWindowScopeMatch `pulumi:"matches"` - // allows for configuring properties that are not explicitly supported by the current version of this provider - Unknowns *string `pulumi:"unknowns"` +type MaintenanceScheduleDailyRecurrence struct { + RecurrenceRange MaintenanceScheduleDailyRecurrenceRecurrenceRange `pulumi:"recurrenceRange"` + TimeWindow MaintenanceScheduleDailyRecurrenceTimeWindow `pulumi:"timeWindow"` } -// MaintenanceWindowScopeInput is an input type that accepts MaintenanceWindowScopeArgs and MaintenanceWindowScopeOutput values. -// You can construct a concrete instance of `MaintenanceWindowScopeInput` via: +// MaintenanceScheduleDailyRecurrenceInput is an input type that accepts MaintenanceScheduleDailyRecurrenceArgs and MaintenanceScheduleDailyRecurrenceOutput values. +// You can construct a concrete instance of `MaintenanceScheduleDailyRecurrenceInput` via: // -// MaintenanceWindowScopeArgs{...} -type MaintenanceWindowScopeInput interface { +// MaintenanceScheduleDailyRecurrenceArgs{...} +type MaintenanceScheduleDailyRecurrenceInput interface { pulumi.Input - ToMaintenanceWindowScopeOutput() MaintenanceWindowScopeOutput - ToMaintenanceWindowScopeOutputWithContext(context.Context) MaintenanceWindowScopeOutput + ToMaintenanceScheduleDailyRecurrenceOutput() MaintenanceScheduleDailyRecurrenceOutput + ToMaintenanceScheduleDailyRecurrenceOutputWithContext(context.Context) MaintenanceScheduleDailyRecurrenceOutput } -type MaintenanceWindowScopeArgs struct { - // A list of Dynatrace entities (for example, hosts or services) to be included in the scope. Allowed values are Dynatrace entity IDs - Entities pulumi.StringArrayInput `pulumi:"entities"` - // A list of matching rules for dynamic scope formation. If several rules are set, the OR logic applies - Matches MaintenanceWindowScopeMatchArrayInput `pulumi:"matches"` - // allows for configuring properties that are not explicitly supported by the current version of this provider - Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` +type MaintenanceScheduleDailyRecurrenceArgs struct { + RecurrenceRange MaintenanceScheduleDailyRecurrenceRecurrenceRangeInput `pulumi:"recurrenceRange"` + TimeWindow MaintenanceScheduleDailyRecurrenceTimeWindowInput `pulumi:"timeWindow"` } -func (MaintenanceWindowScopeArgs) ElementType() reflect.Type { - return reflect.TypeOf((*MaintenanceWindowScope)(nil)).Elem() +func (MaintenanceScheduleDailyRecurrenceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleDailyRecurrence)(nil)).Elem() } -func (i MaintenanceWindowScopeArgs) ToMaintenanceWindowScopeOutput() MaintenanceWindowScopeOutput { - return i.ToMaintenanceWindowScopeOutputWithContext(context.Background()) +func (i MaintenanceScheduleDailyRecurrenceArgs) ToMaintenanceScheduleDailyRecurrenceOutput() MaintenanceScheduleDailyRecurrenceOutput { + return i.ToMaintenanceScheduleDailyRecurrenceOutputWithContext(context.Background()) } -func (i MaintenanceWindowScopeArgs) ToMaintenanceWindowScopeOutputWithContext(ctx context.Context) MaintenanceWindowScopeOutput { - return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScopeOutput) +func (i MaintenanceScheduleDailyRecurrenceArgs) ToMaintenanceScheduleDailyRecurrenceOutputWithContext(ctx context.Context) MaintenanceScheduleDailyRecurrenceOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleDailyRecurrenceOutput) } -func (i MaintenanceWindowScopeArgs) ToMaintenanceWindowScopePtrOutput() MaintenanceWindowScopePtrOutput { - return i.ToMaintenanceWindowScopePtrOutputWithContext(context.Background()) +func (i MaintenanceScheduleDailyRecurrenceArgs) ToMaintenanceScheduleDailyRecurrencePtrOutput() MaintenanceScheduleDailyRecurrencePtrOutput { + return i.ToMaintenanceScheduleDailyRecurrencePtrOutputWithContext(context.Background()) } -func (i MaintenanceWindowScopeArgs) ToMaintenanceWindowScopePtrOutputWithContext(ctx context.Context) MaintenanceWindowScopePtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScopeOutput).ToMaintenanceWindowScopePtrOutputWithContext(ctx) +func (i MaintenanceScheduleDailyRecurrenceArgs) ToMaintenanceScheduleDailyRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceScheduleDailyRecurrencePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleDailyRecurrenceOutput).ToMaintenanceScheduleDailyRecurrencePtrOutputWithContext(ctx) } -// MaintenanceWindowScopePtrInput is an input type that accepts MaintenanceWindowScopeArgs, MaintenanceWindowScopePtr and MaintenanceWindowScopePtrOutput values. -// You can construct a concrete instance of `MaintenanceWindowScopePtrInput` via: +// MaintenanceScheduleDailyRecurrencePtrInput is an input type that accepts MaintenanceScheduleDailyRecurrenceArgs, MaintenanceScheduleDailyRecurrencePtr and MaintenanceScheduleDailyRecurrencePtrOutput values. +// You can construct a concrete instance of `MaintenanceScheduleDailyRecurrencePtrInput` via: // -// MaintenanceWindowScopeArgs{...} +// MaintenanceScheduleDailyRecurrenceArgs{...} // // or: // // nil -type MaintenanceWindowScopePtrInput interface { +type MaintenanceScheduleDailyRecurrencePtrInput interface { pulumi.Input - ToMaintenanceWindowScopePtrOutput() MaintenanceWindowScopePtrOutput - ToMaintenanceWindowScopePtrOutputWithContext(context.Context) MaintenanceWindowScopePtrOutput + ToMaintenanceScheduleDailyRecurrencePtrOutput() MaintenanceScheduleDailyRecurrencePtrOutput + ToMaintenanceScheduleDailyRecurrencePtrOutputWithContext(context.Context) MaintenanceScheduleDailyRecurrencePtrOutput } -type maintenanceWindowScopePtrType MaintenanceWindowScopeArgs +type maintenanceScheduleDailyRecurrencePtrType MaintenanceScheduleDailyRecurrenceArgs -func MaintenanceWindowScopePtr(v *MaintenanceWindowScopeArgs) MaintenanceWindowScopePtrInput { - return (*maintenanceWindowScopePtrType)(v) +func MaintenanceScheduleDailyRecurrencePtr(v *MaintenanceScheduleDailyRecurrenceArgs) MaintenanceScheduleDailyRecurrencePtrInput { + return (*maintenanceScheduleDailyRecurrencePtrType)(v) } -func (*maintenanceWindowScopePtrType) ElementType() reflect.Type { - return reflect.TypeOf((**MaintenanceWindowScope)(nil)).Elem() +func (*maintenanceScheduleDailyRecurrencePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleDailyRecurrence)(nil)).Elem() } -func (i *maintenanceWindowScopePtrType) ToMaintenanceWindowScopePtrOutput() MaintenanceWindowScopePtrOutput { - return i.ToMaintenanceWindowScopePtrOutputWithContext(context.Background()) +func (i *maintenanceScheduleDailyRecurrencePtrType) ToMaintenanceScheduleDailyRecurrencePtrOutput() MaintenanceScheduleDailyRecurrencePtrOutput { + return i.ToMaintenanceScheduleDailyRecurrencePtrOutputWithContext(context.Background()) } -func (i *maintenanceWindowScopePtrType) ToMaintenanceWindowScopePtrOutputWithContext(ctx context.Context) MaintenanceWindowScopePtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScopePtrOutput) +func (i *maintenanceScheduleDailyRecurrencePtrType) ToMaintenanceScheduleDailyRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceScheduleDailyRecurrencePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleDailyRecurrencePtrOutput) } -type MaintenanceWindowScopeOutput struct{ *pulumi.OutputState } +type MaintenanceScheduleDailyRecurrenceOutput struct{ *pulumi.OutputState } -func (MaintenanceWindowScopeOutput) ElementType() reflect.Type { - return reflect.TypeOf((*MaintenanceWindowScope)(nil)).Elem() +func (MaintenanceScheduleDailyRecurrenceOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleDailyRecurrence)(nil)).Elem() } -func (o MaintenanceWindowScopeOutput) ToMaintenanceWindowScopeOutput() MaintenanceWindowScopeOutput { +func (o MaintenanceScheduleDailyRecurrenceOutput) ToMaintenanceScheduleDailyRecurrenceOutput() MaintenanceScheduleDailyRecurrenceOutput { return o } -func (o MaintenanceWindowScopeOutput) ToMaintenanceWindowScopeOutputWithContext(ctx context.Context) MaintenanceWindowScopeOutput { +func (o MaintenanceScheduleDailyRecurrenceOutput) ToMaintenanceScheduleDailyRecurrenceOutputWithContext(ctx context.Context) MaintenanceScheduleDailyRecurrenceOutput { return o } -func (o MaintenanceWindowScopeOutput) ToMaintenanceWindowScopePtrOutput() MaintenanceWindowScopePtrOutput { - return o.ToMaintenanceWindowScopePtrOutputWithContext(context.Background()) +func (o MaintenanceScheduleDailyRecurrenceOutput) ToMaintenanceScheduleDailyRecurrencePtrOutput() MaintenanceScheduleDailyRecurrencePtrOutput { + return o.ToMaintenanceScheduleDailyRecurrencePtrOutputWithContext(context.Background()) } -func (o MaintenanceWindowScopeOutput) ToMaintenanceWindowScopePtrOutputWithContext(ctx context.Context) MaintenanceWindowScopePtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceWindowScope) *MaintenanceWindowScope { +func (o MaintenanceScheduleDailyRecurrenceOutput) ToMaintenanceScheduleDailyRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceScheduleDailyRecurrencePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceScheduleDailyRecurrence) *MaintenanceScheduleDailyRecurrence { return &v - }).(MaintenanceWindowScopePtrOutput) -} - -// A list of Dynatrace entities (for example, hosts or services) to be included in the scope. Allowed values are Dynatrace entity IDs -func (o MaintenanceWindowScopeOutput) Entities() pulumi.StringArrayOutput { - return o.ApplyT(func(v MaintenanceWindowScope) []string { return v.Entities }).(pulumi.StringArrayOutput) + }).(MaintenanceScheduleDailyRecurrencePtrOutput) } -// A list of matching rules for dynamic scope formation. If several rules are set, the OR logic applies -func (o MaintenanceWindowScopeOutput) Matches() MaintenanceWindowScopeMatchArrayOutput { - return o.ApplyT(func(v MaintenanceWindowScope) []MaintenanceWindowScopeMatch { return v.Matches }).(MaintenanceWindowScopeMatchArrayOutput) +func (o MaintenanceScheduleDailyRecurrenceOutput) RecurrenceRange() MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput { + return o.ApplyT(func(v MaintenanceScheduleDailyRecurrence) MaintenanceScheduleDailyRecurrenceRecurrenceRange { + return v.RecurrenceRange + }).(MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput) } -// allows for configuring properties that are not explicitly supported by the current version of this provider -func (o MaintenanceWindowScopeOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v MaintenanceWindowScope) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +func (o MaintenanceScheduleDailyRecurrenceOutput) TimeWindow() MaintenanceScheduleDailyRecurrenceTimeWindowOutput { + return o.ApplyT(func(v MaintenanceScheduleDailyRecurrence) MaintenanceScheduleDailyRecurrenceTimeWindow { + return v.TimeWindow + }).(MaintenanceScheduleDailyRecurrenceTimeWindowOutput) } -type MaintenanceWindowScopePtrOutput struct{ *pulumi.OutputState } +type MaintenanceScheduleDailyRecurrencePtrOutput struct{ *pulumi.OutputState } -func (MaintenanceWindowScopePtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**MaintenanceWindowScope)(nil)).Elem() +func (MaintenanceScheduleDailyRecurrencePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleDailyRecurrence)(nil)).Elem() } -func (o MaintenanceWindowScopePtrOutput) ToMaintenanceWindowScopePtrOutput() MaintenanceWindowScopePtrOutput { +func (o MaintenanceScheduleDailyRecurrencePtrOutput) ToMaintenanceScheduleDailyRecurrencePtrOutput() MaintenanceScheduleDailyRecurrencePtrOutput { return o } -func (o MaintenanceWindowScopePtrOutput) ToMaintenanceWindowScopePtrOutputWithContext(ctx context.Context) MaintenanceWindowScopePtrOutput { +func (o MaintenanceScheduleDailyRecurrencePtrOutput) ToMaintenanceScheduleDailyRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceScheduleDailyRecurrencePtrOutput { return o } -func (o MaintenanceWindowScopePtrOutput) Elem() MaintenanceWindowScopeOutput { - return o.ApplyT(func(v *MaintenanceWindowScope) MaintenanceWindowScope { +func (o MaintenanceScheduleDailyRecurrencePtrOutput) Elem() MaintenanceScheduleDailyRecurrenceOutput { + return o.ApplyT(func(v *MaintenanceScheduleDailyRecurrence) MaintenanceScheduleDailyRecurrence { if v != nil { return *v } - var ret MaintenanceWindowScope + var ret MaintenanceScheduleDailyRecurrence return ret - }).(MaintenanceWindowScopeOutput) -} - -// A list of Dynatrace entities (for example, hosts or services) to be included in the scope. Allowed values are Dynatrace entity IDs -func (o MaintenanceWindowScopePtrOutput) Entities() pulumi.StringArrayOutput { - return o.ApplyT(func(v *MaintenanceWindowScope) []string { - if v == nil { - return nil - } - return v.Entities - }).(pulumi.StringArrayOutput) + }).(MaintenanceScheduleDailyRecurrenceOutput) } -// A list of matching rules for dynamic scope formation. If several rules are set, the OR logic applies -func (o MaintenanceWindowScopePtrOutput) Matches() MaintenanceWindowScopeMatchArrayOutput { - return o.ApplyT(func(v *MaintenanceWindowScope) []MaintenanceWindowScopeMatch { +func (o MaintenanceScheduleDailyRecurrencePtrOutput) RecurrenceRange() MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleDailyRecurrence) *MaintenanceScheduleDailyRecurrenceRecurrenceRange { if v == nil { return nil } - return v.Matches - }).(MaintenanceWindowScopeMatchArrayOutput) + return &v.RecurrenceRange + }).(MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput) } -// allows for configuring properties that are not explicitly supported by the current version of this provider -func (o MaintenanceWindowScopePtrOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v *MaintenanceWindowScope) *string { +func (o MaintenanceScheduleDailyRecurrencePtrOutput) TimeWindow() MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleDailyRecurrence) *MaintenanceScheduleDailyRecurrenceTimeWindow { if v == nil { return nil } - return v.Unknowns - }).(pulumi.StringPtrOutput) + return &v.TimeWindow + }).(MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput) } -type MaintenanceWindowScopeMatch struct { - MzId *string `pulumi:"mzId"` - TagCombination *string `pulumi:"tagCombination"` - Tags []MaintenanceWindowScopeMatchTag `pulumi:"tags"` - // The type of the maintenance: planned or unplanned - Type *string `pulumi:"type"` - // allows for configuring properties that are not explicitly supported by the current version of this provider - Unknowns *string `pulumi:"unknowns"` +type MaintenanceScheduleDailyRecurrenceRecurrenceRange struct { + EndDate string `pulumi:"endDate"` + StartDate string `pulumi:"startDate"` } -// MaintenanceWindowScopeMatchInput is an input type that accepts MaintenanceWindowScopeMatchArgs and MaintenanceWindowScopeMatchOutput values. -// You can construct a concrete instance of `MaintenanceWindowScopeMatchInput` via: +// MaintenanceScheduleDailyRecurrenceRecurrenceRangeInput is an input type that accepts MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs and MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput values. +// You can construct a concrete instance of `MaintenanceScheduleDailyRecurrenceRecurrenceRangeInput` via: // -// MaintenanceWindowScopeMatchArgs{...} -type MaintenanceWindowScopeMatchInput interface { +// MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs{...} +type MaintenanceScheduleDailyRecurrenceRecurrenceRangeInput interface { pulumi.Input - ToMaintenanceWindowScopeMatchOutput() MaintenanceWindowScopeMatchOutput - ToMaintenanceWindowScopeMatchOutputWithContext(context.Context) MaintenanceWindowScopeMatchOutput + ToMaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput() MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput + ToMaintenanceScheduleDailyRecurrenceRecurrenceRangeOutputWithContext(context.Context) MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput } -type MaintenanceWindowScopeMatchArgs struct { - MzId pulumi.StringPtrInput `pulumi:"mzId"` - TagCombination pulumi.StringPtrInput `pulumi:"tagCombination"` - Tags MaintenanceWindowScopeMatchTagArrayInput `pulumi:"tags"` - // The type of the maintenance: planned or unplanned - Type pulumi.StringPtrInput `pulumi:"type"` - // allows for configuring properties that are not explicitly supported by the current version of this provider - Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` +type MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs struct { + EndDate pulumi.StringInput `pulumi:"endDate"` + StartDate pulumi.StringInput `pulumi:"startDate"` } -func (MaintenanceWindowScopeMatchArgs) ElementType() reflect.Type { - return reflect.TypeOf((*MaintenanceWindowScopeMatch)(nil)).Elem() +func (MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleDailyRecurrenceRecurrenceRange)(nil)).Elem() } -func (i MaintenanceWindowScopeMatchArgs) ToMaintenanceWindowScopeMatchOutput() MaintenanceWindowScopeMatchOutput { - return i.ToMaintenanceWindowScopeMatchOutputWithContext(context.Background()) +func (i MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs) ToMaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput() MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput { + return i.ToMaintenanceScheduleDailyRecurrenceRecurrenceRangeOutputWithContext(context.Background()) } -func (i MaintenanceWindowScopeMatchArgs) ToMaintenanceWindowScopeMatchOutputWithContext(ctx context.Context) MaintenanceWindowScopeMatchOutput { - return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScopeMatchOutput) +func (i MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs) ToMaintenanceScheduleDailyRecurrenceRecurrenceRangeOutputWithContext(ctx context.Context) MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput) } -// MaintenanceWindowScopeMatchArrayInput is an input type that accepts MaintenanceWindowScopeMatchArray and MaintenanceWindowScopeMatchArrayOutput values. -// You can construct a concrete instance of `MaintenanceWindowScopeMatchArrayInput` via: +func (i MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs) ToMaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput() MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput { + return i.ToMaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutputWithContext(context.Background()) +} + +func (i MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs) ToMaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutputWithContext(ctx context.Context) MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput).ToMaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutputWithContext(ctx) +} + +// MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrInput is an input type that accepts MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs, MaintenanceScheduleDailyRecurrenceRecurrenceRangePtr and MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput values. +// You can construct a concrete instance of `MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrInput` via: // -// MaintenanceWindowScopeMatchArray{ MaintenanceWindowScopeMatchArgs{...} } -type MaintenanceWindowScopeMatchArrayInput interface { +// MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs{...} +// +// or: +// +// nil +type MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrInput interface { pulumi.Input - ToMaintenanceWindowScopeMatchArrayOutput() MaintenanceWindowScopeMatchArrayOutput - ToMaintenanceWindowScopeMatchArrayOutputWithContext(context.Context) MaintenanceWindowScopeMatchArrayOutput + ToMaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput() MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput + ToMaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutputWithContext(context.Context) MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput } -type MaintenanceWindowScopeMatchArray []MaintenanceWindowScopeMatchInput +type maintenanceScheduleDailyRecurrenceRecurrenceRangePtrType MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs -func (MaintenanceWindowScopeMatchArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]MaintenanceWindowScopeMatch)(nil)).Elem() +func MaintenanceScheduleDailyRecurrenceRecurrenceRangePtr(v *MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs) MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrInput { + return (*maintenanceScheduleDailyRecurrenceRecurrenceRangePtrType)(v) } -func (i MaintenanceWindowScopeMatchArray) ToMaintenanceWindowScopeMatchArrayOutput() MaintenanceWindowScopeMatchArrayOutput { - return i.ToMaintenanceWindowScopeMatchArrayOutputWithContext(context.Background()) +func (*maintenanceScheduleDailyRecurrenceRecurrenceRangePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleDailyRecurrenceRecurrenceRange)(nil)).Elem() } -func (i MaintenanceWindowScopeMatchArray) ToMaintenanceWindowScopeMatchArrayOutputWithContext(ctx context.Context) MaintenanceWindowScopeMatchArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScopeMatchArrayOutput) +func (i *maintenanceScheduleDailyRecurrenceRecurrenceRangePtrType) ToMaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput() MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput { + return i.ToMaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutputWithContext(context.Background()) } -type MaintenanceWindowScopeMatchOutput struct{ *pulumi.OutputState } - -func (MaintenanceWindowScopeMatchOutput) ElementType() reflect.Type { - return reflect.TypeOf((*MaintenanceWindowScopeMatch)(nil)).Elem() +func (i *maintenanceScheduleDailyRecurrenceRecurrenceRangePtrType) ToMaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutputWithContext(ctx context.Context) MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput) } -func (o MaintenanceWindowScopeMatchOutput) ToMaintenanceWindowScopeMatchOutput() MaintenanceWindowScopeMatchOutput { - return o +type MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput struct{ *pulumi.OutputState } + +func (MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleDailyRecurrenceRecurrenceRange)(nil)).Elem() } -func (o MaintenanceWindowScopeMatchOutput) ToMaintenanceWindowScopeMatchOutputWithContext(ctx context.Context) MaintenanceWindowScopeMatchOutput { +func (o MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput) ToMaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput() MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput { return o } -func (o MaintenanceWindowScopeMatchOutput) MzId() pulumi.StringPtrOutput { - return o.ApplyT(func(v MaintenanceWindowScopeMatch) *string { return v.MzId }).(pulumi.StringPtrOutput) +func (o MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput) ToMaintenanceScheduleDailyRecurrenceRecurrenceRangeOutputWithContext(ctx context.Context) MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput { + return o } -func (o MaintenanceWindowScopeMatchOutput) TagCombination() pulumi.StringPtrOutput { - return o.ApplyT(func(v MaintenanceWindowScopeMatch) *string { return v.TagCombination }).(pulumi.StringPtrOutput) +func (o MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput) ToMaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput() MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput { + return o.ToMaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutputWithContext(context.Background()) } -func (o MaintenanceWindowScopeMatchOutput) Tags() MaintenanceWindowScopeMatchTagArrayOutput { - return o.ApplyT(func(v MaintenanceWindowScopeMatch) []MaintenanceWindowScopeMatchTag { return v.Tags }).(MaintenanceWindowScopeMatchTagArrayOutput) +func (o MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput) ToMaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutputWithContext(ctx context.Context) MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceScheduleDailyRecurrenceRecurrenceRange) *MaintenanceScheduleDailyRecurrenceRecurrenceRange { + return &v + }).(MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput) } -// The type of the maintenance: planned or unplanned -func (o MaintenanceWindowScopeMatchOutput) Type() pulumi.StringPtrOutput { - return o.ApplyT(func(v MaintenanceWindowScopeMatch) *string { return v.Type }).(pulumi.StringPtrOutput) +func (o MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput) EndDate() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleDailyRecurrenceRecurrenceRange) string { return v.EndDate }).(pulumi.StringOutput) } -// allows for configuring properties that are not explicitly supported by the current version of this provider -func (o MaintenanceWindowScopeMatchOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v MaintenanceWindowScopeMatch) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +func (o MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput) StartDate() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleDailyRecurrenceRecurrenceRange) string { return v.StartDate }).(pulumi.StringOutput) } -type MaintenanceWindowScopeMatchArrayOutput struct{ *pulumi.OutputState } +type MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput struct{ *pulumi.OutputState } -func (MaintenanceWindowScopeMatchArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]MaintenanceWindowScopeMatch)(nil)).Elem() +func (MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleDailyRecurrenceRecurrenceRange)(nil)).Elem() } -func (o MaintenanceWindowScopeMatchArrayOutput) ToMaintenanceWindowScopeMatchArrayOutput() MaintenanceWindowScopeMatchArrayOutput { +func (o MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput) ToMaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput() MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput { return o } -func (o MaintenanceWindowScopeMatchArrayOutput) ToMaintenanceWindowScopeMatchArrayOutputWithContext(ctx context.Context) MaintenanceWindowScopeMatchArrayOutput { +func (o MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput) ToMaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutputWithContext(ctx context.Context) MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput { return o } -func (o MaintenanceWindowScopeMatchArrayOutput) Index(i pulumi.IntInput) MaintenanceWindowScopeMatchOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) MaintenanceWindowScopeMatch { - return vs[0].([]MaintenanceWindowScopeMatch)[vs[1].(int)] - }).(MaintenanceWindowScopeMatchOutput) +func (o MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput) Elem() MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput { + return o.ApplyT(func(v *MaintenanceScheduleDailyRecurrenceRecurrenceRange) MaintenanceScheduleDailyRecurrenceRecurrenceRange { + if v != nil { + return *v + } + var ret MaintenanceScheduleDailyRecurrenceRecurrenceRange + return ret + }).(MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput) } -type MaintenanceWindowScopeMatchTag struct { - Context string `pulumi:"context"` - Key string `pulumi:"key"` - // allows for configuring properties that are not explicitly supported by the current version of this provider - Unknowns *string `pulumi:"unknowns"` - Value *string `pulumi:"value"` +func (o MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput) EndDate() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleDailyRecurrenceRecurrenceRange) *string { + if v == nil { + return nil + } + return &v.EndDate + }).(pulumi.StringPtrOutput) } -// MaintenanceWindowScopeMatchTagInput is an input type that accepts MaintenanceWindowScopeMatchTagArgs and MaintenanceWindowScopeMatchTagOutput values. -// You can construct a concrete instance of `MaintenanceWindowScopeMatchTagInput` via: +func (o MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput) StartDate() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleDailyRecurrenceRecurrenceRange) *string { + if v == nil { + return nil + } + return &v.StartDate + }).(pulumi.StringPtrOutput) +} + +type MaintenanceScheduleDailyRecurrenceTimeWindow struct { + EndTime string `pulumi:"endTime"` + StartTime string `pulumi:"startTime"` + TimeZone string `pulumi:"timeZone"` +} + +// MaintenanceScheduleDailyRecurrenceTimeWindowInput is an input type that accepts MaintenanceScheduleDailyRecurrenceTimeWindowArgs and MaintenanceScheduleDailyRecurrenceTimeWindowOutput values. +// You can construct a concrete instance of `MaintenanceScheduleDailyRecurrenceTimeWindowInput` via: // -// MaintenanceWindowScopeMatchTagArgs{...} -type MaintenanceWindowScopeMatchTagInput interface { +// MaintenanceScheduleDailyRecurrenceTimeWindowArgs{...} +type MaintenanceScheduleDailyRecurrenceTimeWindowInput interface { pulumi.Input - ToMaintenanceWindowScopeMatchTagOutput() MaintenanceWindowScopeMatchTagOutput - ToMaintenanceWindowScopeMatchTagOutputWithContext(context.Context) MaintenanceWindowScopeMatchTagOutput + ToMaintenanceScheduleDailyRecurrenceTimeWindowOutput() MaintenanceScheduleDailyRecurrenceTimeWindowOutput + ToMaintenanceScheduleDailyRecurrenceTimeWindowOutputWithContext(context.Context) MaintenanceScheduleDailyRecurrenceTimeWindowOutput } -type MaintenanceWindowScopeMatchTagArgs struct { - Context pulumi.StringInput `pulumi:"context"` - Key pulumi.StringInput `pulumi:"key"` - // allows for configuring properties that are not explicitly supported by the current version of this provider - Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` - Value pulumi.StringPtrInput `pulumi:"value"` +type MaintenanceScheduleDailyRecurrenceTimeWindowArgs struct { + EndTime pulumi.StringInput `pulumi:"endTime"` + StartTime pulumi.StringInput `pulumi:"startTime"` + TimeZone pulumi.StringInput `pulumi:"timeZone"` } -func (MaintenanceWindowScopeMatchTagArgs) ElementType() reflect.Type { - return reflect.TypeOf((*MaintenanceWindowScopeMatchTag)(nil)).Elem() +func (MaintenanceScheduleDailyRecurrenceTimeWindowArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleDailyRecurrenceTimeWindow)(nil)).Elem() } -func (i MaintenanceWindowScopeMatchTagArgs) ToMaintenanceWindowScopeMatchTagOutput() MaintenanceWindowScopeMatchTagOutput { - return i.ToMaintenanceWindowScopeMatchTagOutputWithContext(context.Background()) +func (i MaintenanceScheduleDailyRecurrenceTimeWindowArgs) ToMaintenanceScheduleDailyRecurrenceTimeWindowOutput() MaintenanceScheduleDailyRecurrenceTimeWindowOutput { + return i.ToMaintenanceScheduleDailyRecurrenceTimeWindowOutputWithContext(context.Background()) } -func (i MaintenanceWindowScopeMatchTagArgs) ToMaintenanceWindowScopeMatchTagOutputWithContext(ctx context.Context) MaintenanceWindowScopeMatchTagOutput { - return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScopeMatchTagOutput) +func (i MaintenanceScheduleDailyRecurrenceTimeWindowArgs) ToMaintenanceScheduleDailyRecurrenceTimeWindowOutputWithContext(ctx context.Context) MaintenanceScheduleDailyRecurrenceTimeWindowOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleDailyRecurrenceTimeWindowOutput) } -// MaintenanceWindowScopeMatchTagArrayInput is an input type that accepts MaintenanceWindowScopeMatchTagArray and MaintenanceWindowScopeMatchTagArrayOutput values. -// You can construct a concrete instance of `MaintenanceWindowScopeMatchTagArrayInput` via: +func (i MaintenanceScheduleDailyRecurrenceTimeWindowArgs) ToMaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput() MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput { + return i.ToMaintenanceScheduleDailyRecurrenceTimeWindowPtrOutputWithContext(context.Background()) +} + +func (i MaintenanceScheduleDailyRecurrenceTimeWindowArgs) ToMaintenanceScheduleDailyRecurrenceTimeWindowPtrOutputWithContext(ctx context.Context) MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleDailyRecurrenceTimeWindowOutput).ToMaintenanceScheduleDailyRecurrenceTimeWindowPtrOutputWithContext(ctx) +} + +// MaintenanceScheduleDailyRecurrenceTimeWindowPtrInput is an input type that accepts MaintenanceScheduleDailyRecurrenceTimeWindowArgs, MaintenanceScheduleDailyRecurrenceTimeWindowPtr and MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput values. +// You can construct a concrete instance of `MaintenanceScheduleDailyRecurrenceTimeWindowPtrInput` via: // -// MaintenanceWindowScopeMatchTagArray{ MaintenanceWindowScopeMatchTagArgs{...} } -type MaintenanceWindowScopeMatchTagArrayInput interface { +// MaintenanceScheduleDailyRecurrenceTimeWindowArgs{...} +// +// or: +// +// nil +type MaintenanceScheduleDailyRecurrenceTimeWindowPtrInput interface { pulumi.Input - ToMaintenanceWindowScopeMatchTagArrayOutput() MaintenanceWindowScopeMatchTagArrayOutput - ToMaintenanceWindowScopeMatchTagArrayOutputWithContext(context.Context) MaintenanceWindowScopeMatchTagArrayOutput + ToMaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput() MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput + ToMaintenanceScheduleDailyRecurrenceTimeWindowPtrOutputWithContext(context.Context) MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput } -type MaintenanceWindowScopeMatchTagArray []MaintenanceWindowScopeMatchTagInput +type maintenanceScheduleDailyRecurrenceTimeWindowPtrType MaintenanceScheduleDailyRecurrenceTimeWindowArgs -func (MaintenanceWindowScopeMatchTagArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]MaintenanceWindowScopeMatchTag)(nil)).Elem() +func MaintenanceScheduleDailyRecurrenceTimeWindowPtr(v *MaintenanceScheduleDailyRecurrenceTimeWindowArgs) MaintenanceScheduleDailyRecurrenceTimeWindowPtrInput { + return (*maintenanceScheduleDailyRecurrenceTimeWindowPtrType)(v) } -func (i MaintenanceWindowScopeMatchTagArray) ToMaintenanceWindowScopeMatchTagArrayOutput() MaintenanceWindowScopeMatchTagArrayOutput { - return i.ToMaintenanceWindowScopeMatchTagArrayOutputWithContext(context.Background()) +func (*maintenanceScheduleDailyRecurrenceTimeWindowPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleDailyRecurrenceTimeWindow)(nil)).Elem() } -func (i MaintenanceWindowScopeMatchTagArray) ToMaintenanceWindowScopeMatchTagArrayOutputWithContext(ctx context.Context) MaintenanceWindowScopeMatchTagArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScopeMatchTagArrayOutput) +func (i *maintenanceScheduleDailyRecurrenceTimeWindowPtrType) ToMaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput() MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput { + return i.ToMaintenanceScheduleDailyRecurrenceTimeWindowPtrOutputWithContext(context.Background()) } -type MaintenanceWindowScopeMatchTagOutput struct{ *pulumi.OutputState } +func (i *maintenanceScheduleDailyRecurrenceTimeWindowPtrType) ToMaintenanceScheduleDailyRecurrenceTimeWindowPtrOutputWithContext(ctx context.Context) MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput) +} -func (MaintenanceWindowScopeMatchTagOutput) ElementType() reflect.Type { - return reflect.TypeOf((*MaintenanceWindowScopeMatchTag)(nil)).Elem() +type MaintenanceScheduleDailyRecurrenceTimeWindowOutput struct{ *pulumi.OutputState } + +func (MaintenanceScheduleDailyRecurrenceTimeWindowOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleDailyRecurrenceTimeWindow)(nil)).Elem() } -func (o MaintenanceWindowScopeMatchTagOutput) ToMaintenanceWindowScopeMatchTagOutput() MaintenanceWindowScopeMatchTagOutput { +func (o MaintenanceScheduleDailyRecurrenceTimeWindowOutput) ToMaintenanceScheduleDailyRecurrenceTimeWindowOutput() MaintenanceScheduleDailyRecurrenceTimeWindowOutput { return o } -func (o MaintenanceWindowScopeMatchTagOutput) ToMaintenanceWindowScopeMatchTagOutputWithContext(ctx context.Context) MaintenanceWindowScopeMatchTagOutput { +func (o MaintenanceScheduleDailyRecurrenceTimeWindowOutput) ToMaintenanceScheduleDailyRecurrenceTimeWindowOutputWithContext(ctx context.Context) MaintenanceScheduleDailyRecurrenceTimeWindowOutput { return o } -func (o MaintenanceWindowScopeMatchTagOutput) Context() pulumi.StringOutput { - return o.ApplyT(func(v MaintenanceWindowScopeMatchTag) string { return v.Context }).(pulumi.StringOutput) +func (o MaintenanceScheduleDailyRecurrenceTimeWindowOutput) ToMaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput() MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput { + return o.ToMaintenanceScheduleDailyRecurrenceTimeWindowPtrOutputWithContext(context.Background()) } -func (o MaintenanceWindowScopeMatchTagOutput) Key() pulumi.StringOutput { - return o.ApplyT(func(v MaintenanceWindowScopeMatchTag) string { return v.Key }).(pulumi.StringOutput) +func (o MaintenanceScheduleDailyRecurrenceTimeWindowOutput) ToMaintenanceScheduleDailyRecurrenceTimeWindowPtrOutputWithContext(ctx context.Context) MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceScheduleDailyRecurrenceTimeWindow) *MaintenanceScheduleDailyRecurrenceTimeWindow { + return &v + }).(MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput) } -// allows for configuring properties that are not explicitly supported by the current version of this provider -func (o MaintenanceWindowScopeMatchTagOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v MaintenanceWindowScopeMatchTag) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +func (o MaintenanceScheduleDailyRecurrenceTimeWindowOutput) EndTime() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleDailyRecurrenceTimeWindow) string { return v.EndTime }).(pulumi.StringOutput) } -func (o MaintenanceWindowScopeMatchTagOutput) Value() pulumi.StringPtrOutput { - return o.ApplyT(func(v MaintenanceWindowScopeMatchTag) *string { return v.Value }).(pulumi.StringPtrOutput) +func (o MaintenanceScheduleDailyRecurrenceTimeWindowOutput) StartTime() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleDailyRecurrenceTimeWindow) string { return v.StartTime }).(pulumi.StringOutput) } -type MaintenanceWindowScopeMatchTagArrayOutput struct{ *pulumi.OutputState } +func (o MaintenanceScheduleDailyRecurrenceTimeWindowOutput) TimeZone() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleDailyRecurrenceTimeWindow) string { return v.TimeZone }).(pulumi.StringOutput) +} -func (MaintenanceWindowScopeMatchTagArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]MaintenanceWindowScopeMatchTag)(nil)).Elem() +type MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput struct{ *pulumi.OutputState } + +func (MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleDailyRecurrenceTimeWindow)(nil)).Elem() } -func (o MaintenanceWindowScopeMatchTagArrayOutput) ToMaintenanceWindowScopeMatchTagArrayOutput() MaintenanceWindowScopeMatchTagArrayOutput { +func (o MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput) ToMaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput() MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput { return o } -func (o MaintenanceWindowScopeMatchTagArrayOutput) ToMaintenanceWindowScopeMatchTagArrayOutputWithContext(ctx context.Context) MaintenanceWindowScopeMatchTagArrayOutput { +func (o MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput) ToMaintenanceScheduleDailyRecurrenceTimeWindowPtrOutputWithContext(ctx context.Context) MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput { return o } -func (o MaintenanceWindowScopeMatchTagArrayOutput) Index(i pulumi.IntInput) MaintenanceWindowScopeMatchTagOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) MaintenanceWindowScopeMatchTag { - return vs[0].([]MaintenanceWindowScopeMatchTag)[vs[1].(int)] - }).(MaintenanceWindowScopeMatchTagOutput) +func (o MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput) Elem() MaintenanceScheduleDailyRecurrenceTimeWindowOutput { + return o.ApplyT(func(v *MaintenanceScheduleDailyRecurrenceTimeWindow) MaintenanceScheduleDailyRecurrenceTimeWindow { + if v != nil { + return *v + } + var ret MaintenanceScheduleDailyRecurrenceTimeWindow + return ret + }).(MaintenanceScheduleDailyRecurrenceTimeWindowOutput) } -type ManagementZoneDimensionalRule struct { - AppliesTo string `pulumi:"appliesTo"` - Conditions []ManagementZoneDimensionalRuleCondition `pulumi:"conditions"` - Enabled *bool `pulumi:"enabled"` - Unknowns *string `pulumi:"unknowns"` +func (o MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput) EndTime() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleDailyRecurrenceTimeWindow) *string { + if v == nil { + return nil + } + return &v.EndTime + }).(pulumi.StringPtrOutput) } -// ManagementZoneDimensionalRuleInput is an input type that accepts ManagementZoneDimensionalRuleArgs and ManagementZoneDimensionalRuleOutput values. -// You can construct a concrete instance of `ManagementZoneDimensionalRuleInput` via: +func (o MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput) StartTime() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleDailyRecurrenceTimeWindow) *string { + if v == nil { + return nil + } + return &v.StartTime + }).(pulumi.StringPtrOutput) +} + +func (o MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput) TimeZone() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleDailyRecurrenceTimeWindow) *string { + if v == nil { + return nil + } + return &v.TimeZone + }).(pulumi.StringPtrOutput) +} + +type MaintenanceScheduleMonthlyRecurrence struct { + DayOfMonth int `pulumi:"dayOfMonth"` + RecurrenceRange MaintenanceScheduleMonthlyRecurrenceRecurrenceRange `pulumi:"recurrenceRange"` + TimeWindow MaintenanceScheduleMonthlyRecurrenceTimeWindow `pulumi:"timeWindow"` +} + +// MaintenanceScheduleMonthlyRecurrenceInput is an input type that accepts MaintenanceScheduleMonthlyRecurrenceArgs and MaintenanceScheduleMonthlyRecurrenceOutput values. +// You can construct a concrete instance of `MaintenanceScheduleMonthlyRecurrenceInput` via: // -// ManagementZoneDimensionalRuleArgs{...} -type ManagementZoneDimensionalRuleInput interface { +// MaintenanceScheduleMonthlyRecurrenceArgs{...} +type MaintenanceScheduleMonthlyRecurrenceInput interface { pulumi.Input - ToManagementZoneDimensionalRuleOutput() ManagementZoneDimensionalRuleOutput - ToManagementZoneDimensionalRuleOutputWithContext(context.Context) ManagementZoneDimensionalRuleOutput + ToMaintenanceScheduleMonthlyRecurrenceOutput() MaintenanceScheduleMonthlyRecurrenceOutput + ToMaintenanceScheduleMonthlyRecurrenceOutputWithContext(context.Context) MaintenanceScheduleMonthlyRecurrenceOutput } -type ManagementZoneDimensionalRuleArgs struct { - AppliesTo pulumi.StringInput `pulumi:"appliesTo"` - Conditions ManagementZoneDimensionalRuleConditionArrayInput `pulumi:"conditions"` - Enabled pulumi.BoolPtrInput `pulumi:"enabled"` - Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` +type MaintenanceScheduleMonthlyRecurrenceArgs struct { + DayOfMonth pulumi.IntInput `pulumi:"dayOfMonth"` + RecurrenceRange MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeInput `pulumi:"recurrenceRange"` + TimeWindow MaintenanceScheduleMonthlyRecurrenceTimeWindowInput `pulumi:"timeWindow"` } -func (ManagementZoneDimensionalRuleArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneDimensionalRule)(nil)).Elem() +func (MaintenanceScheduleMonthlyRecurrenceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleMonthlyRecurrence)(nil)).Elem() } -func (i ManagementZoneDimensionalRuleArgs) ToManagementZoneDimensionalRuleOutput() ManagementZoneDimensionalRuleOutput { - return i.ToManagementZoneDimensionalRuleOutputWithContext(context.Background()) +func (i MaintenanceScheduleMonthlyRecurrenceArgs) ToMaintenanceScheduleMonthlyRecurrenceOutput() MaintenanceScheduleMonthlyRecurrenceOutput { + return i.ToMaintenanceScheduleMonthlyRecurrenceOutputWithContext(context.Background()) } -func (i ManagementZoneDimensionalRuleArgs) ToManagementZoneDimensionalRuleOutputWithContext(ctx context.Context) ManagementZoneDimensionalRuleOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneDimensionalRuleOutput) +func (i MaintenanceScheduleMonthlyRecurrenceArgs) ToMaintenanceScheduleMonthlyRecurrenceOutputWithContext(ctx context.Context) MaintenanceScheduleMonthlyRecurrenceOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleMonthlyRecurrenceOutput) } -// ManagementZoneDimensionalRuleArrayInput is an input type that accepts ManagementZoneDimensionalRuleArray and ManagementZoneDimensionalRuleArrayOutput values. -// You can construct a concrete instance of `ManagementZoneDimensionalRuleArrayInput` via: +func (i MaintenanceScheduleMonthlyRecurrenceArgs) ToMaintenanceScheduleMonthlyRecurrencePtrOutput() MaintenanceScheduleMonthlyRecurrencePtrOutput { + return i.ToMaintenanceScheduleMonthlyRecurrencePtrOutputWithContext(context.Background()) +} + +func (i MaintenanceScheduleMonthlyRecurrenceArgs) ToMaintenanceScheduleMonthlyRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceScheduleMonthlyRecurrencePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleMonthlyRecurrenceOutput).ToMaintenanceScheduleMonthlyRecurrencePtrOutputWithContext(ctx) +} + +// MaintenanceScheduleMonthlyRecurrencePtrInput is an input type that accepts MaintenanceScheduleMonthlyRecurrenceArgs, MaintenanceScheduleMonthlyRecurrencePtr and MaintenanceScheduleMonthlyRecurrencePtrOutput values. +// You can construct a concrete instance of `MaintenanceScheduleMonthlyRecurrencePtrInput` via: // -// ManagementZoneDimensionalRuleArray{ ManagementZoneDimensionalRuleArgs{...} } -type ManagementZoneDimensionalRuleArrayInput interface { +// MaintenanceScheduleMonthlyRecurrenceArgs{...} +// +// or: +// +// nil +type MaintenanceScheduleMonthlyRecurrencePtrInput interface { pulumi.Input - ToManagementZoneDimensionalRuleArrayOutput() ManagementZoneDimensionalRuleArrayOutput - ToManagementZoneDimensionalRuleArrayOutputWithContext(context.Context) ManagementZoneDimensionalRuleArrayOutput + ToMaintenanceScheduleMonthlyRecurrencePtrOutput() MaintenanceScheduleMonthlyRecurrencePtrOutput + ToMaintenanceScheduleMonthlyRecurrencePtrOutputWithContext(context.Context) MaintenanceScheduleMonthlyRecurrencePtrOutput } -type ManagementZoneDimensionalRuleArray []ManagementZoneDimensionalRuleInput +type maintenanceScheduleMonthlyRecurrencePtrType MaintenanceScheduleMonthlyRecurrenceArgs -func (ManagementZoneDimensionalRuleArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneDimensionalRule)(nil)).Elem() +func MaintenanceScheduleMonthlyRecurrencePtr(v *MaintenanceScheduleMonthlyRecurrenceArgs) MaintenanceScheduleMonthlyRecurrencePtrInput { + return (*maintenanceScheduleMonthlyRecurrencePtrType)(v) } -func (i ManagementZoneDimensionalRuleArray) ToManagementZoneDimensionalRuleArrayOutput() ManagementZoneDimensionalRuleArrayOutput { - return i.ToManagementZoneDimensionalRuleArrayOutputWithContext(context.Background()) +func (*maintenanceScheduleMonthlyRecurrencePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleMonthlyRecurrence)(nil)).Elem() } -func (i ManagementZoneDimensionalRuleArray) ToManagementZoneDimensionalRuleArrayOutputWithContext(ctx context.Context) ManagementZoneDimensionalRuleArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneDimensionalRuleArrayOutput) +func (i *maintenanceScheduleMonthlyRecurrencePtrType) ToMaintenanceScheduleMonthlyRecurrencePtrOutput() MaintenanceScheduleMonthlyRecurrencePtrOutput { + return i.ToMaintenanceScheduleMonthlyRecurrencePtrOutputWithContext(context.Background()) } -type ManagementZoneDimensionalRuleOutput struct{ *pulumi.OutputState } +func (i *maintenanceScheduleMonthlyRecurrencePtrType) ToMaintenanceScheduleMonthlyRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceScheduleMonthlyRecurrencePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleMonthlyRecurrencePtrOutput) +} -func (ManagementZoneDimensionalRuleOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneDimensionalRule)(nil)).Elem() +type MaintenanceScheduleMonthlyRecurrenceOutput struct{ *pulumi.OutputState } + +func (MaintenanceScheduleMonthlyRecurrenceOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleMonthlyRecurrence)(nil)).Elem() } -func (o ManagementZoneDimensionalRuleOutput) ToManagementZoneDimensionalRuleOutput() ManagementZoneDimensionalRuleOutput { +func (o MaintenanceScheduleMonthlyRecurrenceOutput) ToMaintenanceScheduleMonthlyRecurrenceOutput() MaintenanceScheduleMonthlyRecurrenceOutput { return o } -func (o ManagementZoneDimensionalRuleOutput) ToManagementZoneDimensionalRuleOutputWithContext(ctx context.Context) ManagementZoneDimensionalRuleOutput { +func (o MaintenanceScheduleMonthlyRecurrenceOutput) ToMaintenanceScheduleMonthlyRecurrenceOutputWithContext(ctx context.Context) MaintenanceScheduleMonthlyRecurrenceOutput { return o } -func (o ManagementZoneDimensionalRuleOutput) AppliesTo() pulumi.StringOutput { - return o.ApplyT(func(v ManagementZoneDimensionalRule) string { return v.AppliesTo }).(pulumi.StringOutput) +func (o MaintenanceScheduleMonthlyRecurrenceOutput) ToMaintenanceScheduleMonthlyRecurrencePtrOutput() MaintenanceScheduleMonthlyRecurrencePtrOutput { + return o.ToMaintenanceScheduleMonthlyRecurrencePtrOutputWithContext(context.Background()) } -func (o ManagementZoneDimensionalRuleOutput) Conditions() ManagementZoneDimensionalRuleConditionArrayOutput { - return o.ApplyT(func(v ManagementZoneDimensionalRule) []ManagementZoneDimensionalRuleCondition { return v.Conditions }).(ManagementZoneDimensionalRuleConditionArrayOutput) +func (o MaintenanceScheduleMonthlyRecurrenceOutput) ToMaintenanceScheduleMonthlyRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceScheduleMonthlyRecurrencePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceScheduleMonthlyRecurrence) *MaintenanceScheduleMonthlyRecurrence { + return &v + }).(MaintenanceScheduleMonthlyRecurrencePtrOutput) } -func (o ManagementZoneDimensionalRuleOutput) Enabled() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ManagementZoneDimensionalRule) *bool { return v.Enabled }).(pulumi.BoolPtrOutput) +func (o MaintenanceScheduleMonthlyRecurrenceOutput) DayOfMonth() pulumi.IntOutput { + return o.ApplyT(func(v MaintenanceScheduleMonthlyRecurrence) int { return v.DayOfMonth }).(pulumi.IntOutput) } -func (o ManagementZoneDimensionalRuleOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneDimensionalRule) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +func (o MaintenanceScheduleMonthlyRecurrenceOutput) RecurrenceRange() MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput { + return o.ApplyT(func(v MaintenanceScheduleMonthlyRecurrence) MaintenanceScheduleMonthlyRecurrenceRecurrenceRange { + return v.RecurrenceRange + }).(MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput) } -type ManagementZoneDimensionalRuleArrayOutput struct{ *pulumi.OutputState } +func (o MaintenanceScheduleMonthlyRecurrenceOutput) TimeWindow() MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput { + return o.ApplyT(func(v MaintenanceScheduleMonthlyRecurrence) MaintenanceScheduleMonthlyRecurrenceTimeWindow { + return v.TimeWindow + }).(MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput) +} -func (ManagementZoneDimensionalRuleArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneDimensionalRule)(nil)).Elem() +type MaintenanceScheduleMonthlyRecurrencePtrOutput struct{ *pulumi.OutputState } + +func (MaintenanceScheduleMonthlyRecurrencePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleMonthlyRecurrence)(nil)).Elem() } -func (o ManagementZoneDimensionalRuleArrayOutput) ToManagementZoneDimensionalRuleArrayOutput() ManagementZoneDimensionalRuleArrayOutput { +func (o MaintenanceScheduleMonthlyRecurrencePtrOutput) ToMaintenanceScheduleMonthlyRecurrencePtrOutput() MaintenanceScheduleMonthlyRecurrencePtrOutput { return o } -func (o ManagementZoneDimensionalRuleArrayOutput) ToManagementZoneDimensionalRuleArrayOutputWithContext(ctx context.Context) ManagementZoneDimensionalRuleArrayOutput { +func (o MaintenanceScheduleMonthlyRecurrencePtrOutput) ToMaintenanceScheduleMonthlyRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceScheduleMonthlyRecurrencePtrOutput { return o } -func (o ManagementZoneDimensionalRuleArrayOutput) Index(i pulumi.IntInput) ManagementZoneDimensionalRuleOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneDimensionalRule { - return vs[0].([]ManagementZoneDimensionalRule)[vs[1].(int)] - }).(ManagementZoneDimensionalRuleOutput) +func (o MaintenanceScheduleMonthlyRecurrencePtrOutput) Elem() MaintenanceScheduleMonthlyRecurrenceOutput { + return o.ApplyT(func(v *MaintenanceScheduleMonthlyRecurrence) MaintenanceScheduleMonthlyRecurrence { + if v != nil { + return *v + } + var ret MaintenanceScheduleMonthlyRecurrence + return ret + }).(MaintenanceScheduleMonthlyRecurrenceOutput) } -type ManagementZoneDimensionalRuleCondition struct { - Key string `pulumi:"key"` - Match string `pulumi:"match"` - Type string `pulumi:"type"` - Unknowns *string `pulumi:"unknowns"` - Value *string `pulumi:"value"` +func (o MaintenanceScheduleMonthlyRecurrencePtrOutput) DayOfMonth() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleMonthlyRecurrence) *int { + if v == nil { + return nil + } + return &v.DayOfMonth + }).(pulumi.IntPtrOutput) } -// ManagementZoneDimensionalRuleConditionInput is an input type that accepts ManagementZoneDimensionalRuleConditionArgs and ManagementZoneDimensionalRuleConditionOutput values. -// You can construct a concrete instance of `ManagementZoneDimensionalRuleConditionInput` via: +func (o MaintenanceScheduleMonthlyRecurrencePtrOutput) RecurrenceRange() MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleMonthlyRecurrence) *MaintenanceScheduleMonthlyRecurrenceRecurrenceRange { + if v == nil { + return nil + } + return &v.RecurrenceRange + }).(MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput) +} + +func (o MaintenanceScheduleMonthlyRecurrencePtrOutput) TimeWindow() MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleMonthlyRecurrence) *MaintenanceScheduleMonthlyRecurrenceTimeWindow { + if v == nil { + return nil + } + return &v.TimeWindow + }).(MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput) +} + +type MaintenanceScheduleMonthlyRecurrenceRecurrenceRange struct { + EndDate string `pulumi:"endDate"` + StartDate string `pulumi:"startDate"` +} + +// MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeInput is an input type that accepts MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs and MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput values. +// You can construct a concrete instance of `MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeInput` via: // -// ManagementZoneDimensionalRuleConditionArgs{...} -type ManagementZoneDimensionalRuleConditionInput interface { +// MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs{...} +type MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeInput interface { pulumi.Input - ToManagementZoneDimensionalRuleConditionOutput() ManagementZoneDimensionalRuleConditionOutput - ToManagementZoneDimensionalRuleConditionOutputWithContext(context.Context) ManagementZoneDimensionalRuleConditionOutput + ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput() MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput + ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutputWithContext(context.Context) MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput } -type ManagementZoneDimensionalRuleConditionArgs struct { - Key pulumi.StringInput `pulumi:"key"` - Match pulumi.StringInput `pulumi:"match"` - Type pulumi.StringInput `pulumi:"type"` - Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` - Value pulumi.StringPtrInput `pulumi:"value"` +type MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs struct { + EndDate pulumi.StringInput `pulumi:"endDate"` + StartDate pulumi.StringInput `pulumi:"startDate"` } -func (ManagementZoneDimensionalRuleConditionArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneDimensionalRuleCondition)(nil)).Elem() +func (MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleMonthlyRecurrenceRecurrenceRange)(nil)).Elem() } -func (i ManagementZoneDimensionalRuleConditionArgs) ToManagementZoneDimensionalRuleConditionOutput() ManagementZoneDimensionalRuleConditionOutput { - return i.ToManagementZoneDimensionalRuleConditionOutputWithContext(context.Background()) +func (i MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs) ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput() MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput { + return i.ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutputWithContext(context.Background()) } -func (i ManagementZoneDimensionalRuleConditionArgs) ToManagementZoneDimensionalRuleConditionOutputWithContext(ctx context.Context) ManagementZoneDimensionalRuleConditionOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneDimensionalRuleConditionOutput) +func (i MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs) ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutputWithContext(ctx context.Context) MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput) } -// ManagementZoneDimensionalRuleConditionArrayInput is an input type that accepts ManagementZoneDimensionalRuleConditionArray and ManagementZoneDimensionalRuleConditionArrayOutput values. -// You can construct a concrete instance of `ManagementZoneDimensionalRuleConditionArrayInput` via: +func (i MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs) ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput() MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput { + return i.ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutputWithContext(context.Background()) +} + +func (i MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs) ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutputWithContext(ctx context.Context) MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput).ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutputWithContext(ctx) +} + +// MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrInput is an input type that accepts MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs, MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtr and MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput values. +// You can construct a concrete instance of `MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrInput` via: // -// ManagementZoneDimensionalRuleConditionArray{ ManagementZoneDimensionalRuleConditionArgs{...} } -type ManagementZoneDimensionalRuleConditionArrayInput interface { +// MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs{...} +// +// or: +// +// nil +type MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrInput interface { pulumi.Input - ToManagementZoneDimensionalRuleConditionArrayOutput() ManagementZoneDimensionalRuleConditionArrayOutput - ToManagementZoneDimensionalRuleConditionArrayOutputWithContext(context.Context) ManagementZoneDimensionalRuleConditionArrayOutput + ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput() MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput + ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutputWithContext(context.Context) MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput } -type ManagementZoneDimensionalRuleConditionArray []ManagementZoneDimensionalRuleConditionInput +type maintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrType MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs -func (ManagementZoneDimensionalRuleConditionArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneDimensionalRuleCondition)(nil)).Elem() +func MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtr(v *MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs) MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrInput { + return (*maintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrType)(v) } -func (i ManagementZoneDimensionalRuleConditionArray) ToManagementZoneDimensionalRuleConditionArrayOutput() ManagementZoneDimensionalRuleConditionArrayOutput { - return i.ToManagementZoneDimensionalRuleConditionArrayOutputWithContext(context.Background()) +func (*maintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleMonthlyRecurrenceRecurrenceRange)(nil)).Elem() } -func (i ManagementZoneDimensionalRuleConditionArray) ToManagementZoneDimensionalRuleConditionArrayOutputWithContext(ctx context.Context) ManagementZoneDimensionalRuleConditionArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneDimensionalRuleConditionArrayOutput) +func (i *maintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrType) ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput() MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput { + return i.ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutputWithContext(context.Background()) } -type ManagementZoneDimensionalRuleConditionOutput struct{ *pulumi.OutputState } - -func (ManagementZoneDimensionalRuleConditionOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneDimensionalRuleCondition)(nil)).Elem() +func (i *maintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrType) ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutputWithContext(ctx context.Context) MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput) } -func (o ManagementZoneDimensionalRuleConditionOutput) ToManagementZoneDimensionalRuleConditionOutput() ManagementZoneDimensionalRuleConditionOutput { - return o +type MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput struct{ *pulumi.OutputState } + +func (MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleMonthlyRecurrenceRecurrenceRange)(nil)).Elem() } -func (o ManagementZoneDimensionalRuleConditionOutput) ToManagementZoneDimensionalRuleConditionOutputWithContext(ctx context.Context) ManagementZoneDimensionalRuleConditionOutput { +func (o MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput) ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput() MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput { return o } -func (o ManagementZoneDimensionalRuleConditionOutput) Key() pulumi.StringOutput { - return o.ApplyT(func(v ManagementZoneDimensionalRuleCondition) string { return v.Key }).(pulumi.StringOutput) +func (o MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput) ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutputWithContext(ctx context.Context) MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput { + return o } -func (o ManagementZoneDimensionalRuleConditionOutput) Match() pulumi.StringOutput { - return o.ApplyT(func(v ManagementZoneDimensionalRuleCondition) string { return v.Match }).(pulumi.StringOutput) +func (o MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput) ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput() MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput { + return o.ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutputWithContext(context.Background()) } -func (o ManagementZoneDimensionalRuleConditionOutput) Type() pulumi.StringOutput { - return o.ApplyT(func(v ManagementZoneDimensionalRuleCondition) string { return v.Type }).(pulumi.StringOutput) +func (o MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput) ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutputWithContext(ctx context.Context) MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceScheduleMonthlyRecurrenceRecurrenceRange) *MaintenanceScheduleMonthlyRecurrenceRecurrenceRange { + return &v + }).(MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput) } -func (o ManagementZoneDimensionalRuleConditionOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneDimensionalRuleCondition) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +func (o MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput) EndDate() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleMonthlyRecurrenceRecurrenceRange) string { return v.EndDate }).(pulumi.StringOutput) } -func (o ManagementZoneDimensionalRuleConditionOutput) Value() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneDimensionalRuleCondition) *string { return v.Value }).(pulumi.StringPtrOutput) +func (o MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput) StartDate() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleMonthlyRecurrenceRecurrenceRange) string { return v.StartDate }).(pulumi.StringOutput) } -type ManagementZoneDimensionalRuleConditionArrayOutput struct{ *pulumi.OutputState } +type MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput struct{ *pulumi.OutputState } -func (ManagementZoneDimensionalRuleConditionArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneDimensionalRuleCondition)(nil)).Elem() +func (MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleMonthlyRecurrenceRecurrenceRange)(nil)).Elem() } -func (o ManagementZoneDimensionalRuleConditionArrayOutput) ToManagementZoneDimensionalRuleConditionArrayOutput() ManagementZoneDimensionalRuleConditionArrayOutput { +func (o MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput) ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput() MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput { return o } -func (o ManagementZoneDimensionalRuleConditionArrayOutput) ToManagementZoneDimensionalRuleConditionArrayOutputWithContext(ctx context.Context) ManagementZoneDimensionalRuleConditionArrayOutput { +func (o MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput) ToMaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutputWithContext(ctx context.Context) MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput { return o } -func (o ManagementZoneDimensionalRuleConditionArrayOutput) Index(i pulumi.IntInput) ManagementZoneDimensionalRuleConditionOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneDimensionalRuleCondition { - return vs[0].([]ManagementZoneDimensionalRuleCondition)[vs[1].(int)] - }).(ManagementZoneDimensionalRuleConditionOutput) +func (o MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput) Elem() MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput { + return o.ApplyT(func(v *MaintenanceScheduleMonthlyRecurrenceRecurrenceRange) MaintenanceScheduleMonthlyRecurrenceRecurrenceRange { + if v != nil { + return *v + } + var ret MaintenanceScheduleMonthlyRecurrenceRecurrenceRange + return ret + }).(MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput) } -type ManagementZoneEntitySelectorBasedRule struct { - Enabled *bool `pulumi:"enabled"` - Selector *string `pulumi:"selector"` - Unknowns *string `pulumi:"unknowns"` +func (o MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput) EndDate() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleMonthlyRecurrenceRecurrenceRange) *string { + if v == nil { + return nil + } + return &v.EndDate + }).(pulumi.StringPtrOutput) } -// ManagementZoneEntitySelectorBasedRuleInput is an input type that accepts ManagementZoneEntitySelectorBasedRuleArgs and ManagementZoneEntitySelectorBasedRuleOutput values. -// You can construct a concrete instance of `ManagementZoneEntitySelectorBasedRuleInput` via: +func (o MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput) StartDate() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleMonthlyRecurrenceRecurrenceRange) *string { + if v == nil { + return nil + } + return &v.StartDate + }).(pulumi.StringPtrOutput) +} + +type MaintenanceScheduleMonthlyRecurrenceTimeWindow struct { + EndTime string `pulumi:"endTime"` + StartTime string `pulumi:"startTime"` + TimeZone string `pulumi:"timeZone"` +} + +// MaintenanceScheduleMonthlyRecurrenceTimeWindowInput is an input type that accepts MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs and MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput values. +// You can construct a concrete instance of `MaintenanceScheduleMonthlyRecurrenceTimeWindowInput` via: // -// ManagementZoneEntitySelectorBasedRuleArgs{...} -type ManagementZoneEntitySelectorBasedRuleInput interface { +// MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs{...} +type MaintenanceScheduleMonthlyRecurrenceTimeWindowInput interface { pulumi.Input - ToManagementZoneEntitySelectorBasedRuleOutput() ManagementZoneEntitySelectorBasedRuleOutput - ToManagementZoneEntitySelectorBasedRuleOutputWithContext(context.Context) ManagementZoneEntitySelectorBasedRuleOutput + ToMaintenanceScheduleMonthlyRecurrenceTimeWindowOutput() MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput + ToMaintenanceScheduleMonthlyRecurrenceTimeWindowOutputWithContext(context.Context) MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput } -type ManagementZoneEntitySelectorBasedRuleArgs struct { - Enabled pulumi.BoolPtrInput `pulumi:"enabled"` - Selector pulumi.StringPtrInput `pulumi:"selector"` - Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` +type MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs struct { + EndTime pulumi.StringInput `pulumi:"endTime"` + StartTime pulumi.StringInput `pulumi:"startTime"` + TimeZone pulumi.StringInput `pulumi:"timeZone"` } -func (ManagementZoneEntitySelectorBasedRuleArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneEntitySelectorBasedRule)(nil)).Elem() +func (MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleMonthlyRecurrenceTimeWindow)(nil)).Elem() } -func (i ManagementZoneEntitySelectorBasedRuleArgs) ToManagementZoneEntitySelectorBasedRuleOutput() ManagementZoneEntitySelectorBasedRuleOutput { - return i.ToManagementZoneEntitySelectorBasedRuleOutputWithContext(context.Background()) +func (i MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs) ToMaintenanceScheduleMonthlyRecurrenceTimeWindowOutput() MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput { + return i.ToMaintenanceScheduleMonthlyRecurrenceTimeWindowOutputWithContext(context.Background()) } -func (i ManagementZoneEntitySelectorBasedRuleArgs) ToManagementZoneEntitySelectorBasedRuleOutputWithContext(ctx context.Context) ManagementZoneEntitySelectorBasedRuleOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneEntitySelectorBasedRuleOutput) +func (i MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs) ToMaintenanceScheduleMonthlyRecurrenceTimeWindowOutputWithContext(ctx context.Context) MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput) } -// ManagementZoneEntitySelectorBasedRuleArrayInput is an input type that accepts ManagementZoneEntitySelectorBasedRuleArray and ManagementZoneEntitySelectorBasedRuleArrayOutput values. -// You can construct a concrete instance of `ManagementZoneEntitySelectorBasedRuleArrayInput` via: +func (i MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs) ToMaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput() MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput { + return i.ToMaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutputWithContext(context.Background()) +} + +func (i MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs) ToMaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutputWithContext(ctx context.Context) MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput).ToMaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutputWithContext(ctx) +} + +// MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrInput is an input type that accepts MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs, MaintenanceScheduleMonthlyRecurrenceTimeWindowPtr and MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput values. +// You can construct a concrete instance of `MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrInput` via: // -// ManagementZoneEntitySelectorBasedRuleArray{ ManagementZoneEntitySelectorBasedRuleArgs{...} } -type ManagementZoneEntitySelectorBasedRuleArrayInput interface { +// MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs{...} +// +// or: +// +// nil +type MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrInput interface { pulumi.Input - ToManagementZoneEntitySelectorBasedRuleArrayOutput() ManagementZoneEntitySelectorBasedRuleArrayOutput - ToManagementZoneEntitySelectorBasedRuleArrayOutputWithContext(context.Context) ManagementZoneEntitySelectorBasedRuleArrayOutput + ToMaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput() MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput + ToMaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutputWithContext(context.Context) MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput } -type ManagementZoneEntitySelectorBasedRuleArray []ManagementZoneEntitySelectorBasedRuleInput +type maintenanceScheduleMonthlyRecurrenceTimeWindowPtrType MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs -func (ManagementZoneEntitySelectorBasedRuleArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneEntitySelectorBasedRule)(nil)).Elem() +func MaintenanceScheduleMonthlyRecurrenceTimeWindowPtr(v *MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs) MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrInput { + return (*maintenanceScheduleMonthlyRecurrenceTimeWindowPtrType)(v) } -func (i ManagementZoneEntitySelectorBasedRuleArray) ToManagementZoneEntitySelectorBasedRuleArrayOutput() ManagementZoneEntitySelectorBasedRuleArrayOutput { - return i.ToManagementZoneEntitySelectorBasedRuleArrayOutputWithContext(context.Background()) +func (*maintenanceScheduleMonthlyRecurrenceTimeWindowPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleMonthlyRecurrenceTimeWindow)(nil)).Elem() } -func (i ManagementZoneEntitySelectorBasedRuleArray) ToManagementZoneEntitySelectorBasedRuleArrayOutputWithContext(ctx context.Context) ManagementZoneEntitySelectorBasedRuleArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneEntitySelectorBasedRuleArrayOutput) +func (i *maintenanceScheduleMonthlyRecurrenceTimeWindowPtrType) ToMaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput() MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput { + return i.ToMaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutputWithContext(context.Background()) } -type ManagementZoneEntitySelectorBasedRuleOutput struct{ *pulumi.OutputState } +func (i *maintenanceScheduleMonthlyRecurrenceTimeWindowPtrType) ToMaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutputWithContext(ctx context.Context) MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput) +} -func (ManagementZoneEntitySelectorBasedRuleOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneEntitySelectorBasedRule)(nil)).Elem() +type MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput struct{ *pulumi.OutputState } + +func (MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleMonthlyRecurrenceTimeWindow)(nil)).Elem() } -func (o ManagementZoneEntitySelectorBasedRuleOutput) ToManagementZoneEntitySelectorBasedRuleOutput() ManagementZoneEntitySelectorBasedRuleOutput { +func (o MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput) ToMaintenanceScheduleMonthlyRecurrenceTimeWindowOutput() MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput { return o } -func (o ManagementZoneEntitySelectorBasedRuleOutput) ToManagementZoneEntitySelectorBasedRuleOutputWithContext(ctx context.Context) ManagementZoneEntitySelectorBasedRuleOutput { +func (o MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput) ToMaintenanceScheduleMonthlyRecurrenceTimeWindowOutputWithContext(ctx context.Context) MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput { return o } -func (o ManagementZoneEntitySelectorBasedRuleOutput) Enabled() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ManagementZoneEntitySelectorBasedRule) *bool { return v.Enabled }).(pulumi.BoolPtrOutput) +func (o MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput) ToMaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput() MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput { + return o.ToMaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutputWithContext(context.Background()) } -func (o ManagementZoneEntitySelectorBasedRuleOutput) Selector() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneEntitySelectorBasedRule) *string { return v.Selector }).(pulumi.StringPtrOutput) +func (o MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput) ToMaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutputWithContext(ctx context.Context) MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceScheduleMonthlyRecurrenceTimeWindow) *MaintenanceScheduleMonthlyRecurrenceTimeWindow { + return &v + }).(MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput) } -func (o ManagementZoneEntitySelectorBasedRuleOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneEntitySelectorBasedRule) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +func (o MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput) EndTime() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleMonthlyRecurrenceTimeWindow) string { return v.EndTime }).(pulumi.StringOutput) } -type ManagementZoneEntitySelectorBasedRuleArrayOutput struct{ *pulumi.OutputState } +func (o MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput) StartTime() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleMonthlyRecurrenceTimeWindow) string { return v.StartTime }).(pulumi.StringOutput) +} -func (ManagementZoneEntitySelectorBasedRuleArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneEntitySelectorBasedRule)(nil)).Elem() +func (o MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput) TimeZone() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleMonthlyRecurrenceTimeWindow) string { return v.TimeZone }).(pulumi.StringOutput) } -func (o ManagementZoneEntitySelectorBasedRuleArrayOutput) ToManagementZoneEntitySelectorBasedRuleArrayOutput() ManagementZoneEntitySelectorBasedRuleArrayOutput { +type MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput struct{ *pulumi.OutputState } + +func (MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleMonthlyRecurrenceTimeWindow)(nil)).Elem() +} + +func (o MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput) ToMaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput() MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput { return o } -func (o ManagementZoneEntitySelectorBasedRuleArrayOutput) ToManagementZoneEntitySelectorBasedRuleArrayOutputWithContext(ctx context.Context) ManagementZoneEntitySelectorBasedRuleArrayOutput { +func (o MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput) ToMaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutputWithContext(ctx context.Context) MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput { return o } -func (o ManagementZoneEntitySelectorBasedRuleArrayOutput) Index(i pulumi.IntInput) ManagementZoneEntitySelectorBasedRuleOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneEntitySelectorBasedRule { - return vs[0].([]ManagementZoneEntitySelectorBasedRule)[vs[1].(int)] - }).(ManagementZoneEntitySelectorBasedRuleOutput) +func (o MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput) Elem() MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput { + return o.ApplyT(func(v *MaintenanceScheduleMonthlyRecurrenceTimeWindow) MaintenanceScheduleMonthlyRecurrenceTimeWindow { + if v != nil { + return *v + } + var ret MaintenanceScheduleMonthlyRecurrenceTimeWindow + return ret + }).(MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput) } -type ManagementZoneMetadata struct { - ClusterVersion *string `pulumi:"clusterVersion"` - ConfigurationVersions []int `pulumi:"configurationVersions"` - CurrentConfigurationVersions []string `pulumi:"currentConfigurationVersions"` +func (o MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput) EndTime() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleMonthlyRecurrenceTimeWindow) *string { + if v == nil { + return nil + } + return &v.EndTime + }).(pulumi.StringPtrOutput) +} + +func (o MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput) StartTime() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleMonthlyRecurrenceTimeWindow) *string { + if v == nil { + return nil + } + return &v.StartTime + }).(pulumi.StringPtrOutput) +} + +func (o MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput) TimeZone() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleMonthlyRecurrenceTimeWindow) *string { + if v == nil { + return nil + } + return &v.TimeZone + }).(pulumi.StringPtrOutput) +} + +type MaintenanceScheduleOnceRecurrence struct { + EndTime string `pulumi:"endTime"` + StartTime string `pulumi:"startTime"` + TimeZone string `pulumi:"timeZone"` } -// ManagementZoneMetadataInput is an input type that accepts ManagementZoneMetadataArgs and ManagementZoneMetadataOutput values. -// You can construct a concrete instance of `ManagementZoneMetadataInput` via: +// MaintenanceScheduleOnceRecurrenceInput is an input type that accepts MaintenanceScheduleOnceRecurrenceArgs and MaintenanceScheduleOnceRecurrenceOutput values. +// You can construct a concrete instance of `MaintenanceScheduleOnceRecurrenceInput` via: // -// ManagementZoneMetadataArgs{...} -type ManagementZoneMetadataInput interface { +// MaintenanceScheduleOnceRecurrenceArgs{...} +type MaintenanceScheduleOnceRecurrenceInput interface { pulumi.Input - ToManagementZoneMetadataOutput() ManagementZoneMetadataOutput - ToManagementZoneMetadataOutputWithContext(context.Context) ManagementZoneMetadataOutput + ToMaintenanceScheduleOnceRecurrenceOutput() MaintenanceScheduleOnceRecurrenceOutput + ToMaintenanceScheduleOnceRecurrenceOutputWithContext(context.Context) MaintenanceScheduleOnceRecurrenceOutput } -type ManagementZoneMetadataArgs struct { - ClusterVersion pulumi.StringPtrInput `pulumi:"clusterVersion"` - ConfigurationVersions pulumi.IntArrayInput `pulumi:"configurationVersions"` - CurrentConfigurationVersions pulumi.StringArrayInput `pulumi:"currentConfigurationVersions"` +type MaintenanceScheduleOnceRecurrenceArgs struct { + EndTime pulumi.StringInput `pulumi:"endTime"` + StartTime pulumi.StringInput `pulumi:"startTime"` + TimeZone pulumi.StringInput `pulumi:"timeZone"` } -func (ManagementZoneMetadataArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneMetadata)(nil)).Elem() +func (MaintenanceScheduleOnceRecurrenceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleOnceRecurrence)(nil)).Elem() } -func (i ManagementZoneMetadataArgs) ToManagementZoneMetadataOutput() ManagementZoneMetadataOutput { - return i.ToManagementZoneMetadataOutputWithContext(context.Background()) +func (i MaintenanceScheduleOnceRecurrenceArgs) ToMaintenanceScheduleOnceRecurrenceOutput() MaintenanceScheduleOnceRecurrenceOutput { + return i.ToMaintenanceScheduleOnceRecurrenceOutputWithContext(context.Background()) } -func (i ManagementZoneMetadataArgs) ToManagementZoneMetadataOutputWithContext(ctx context.Context) ManagementZoneMetadataOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneMetadataOutput) +func (i MaintenanceScheduleOnceRecurrenceArgs) ToMaintenanceScheduleOnceRecurrenceOutputWithContext(ctx context.Context) MaintenanceScheduleOnceRecurrenceOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleOnceRecurrenceOutput) } -func (i ManagementZoneMetadataArgs) ToManagementZoneMetadataPtrOutput() ManagementZoneMetadataPtrOutput { - return i.ToManagementZoneMetadataPtrOutputWithContext(context.Background()) +func (i MaintenanceScheduleOnceRecurrenceArgs) ToMaintenanceScheduleOnceRecurrencePtrOutput() MaintenanceScheduleOnceRecurrencePtrOutput { + return i.ToMaintenanceScheduleOnceRecurrencePtrOutputWithContext(context.Background()) } -func (i ManagementZoneMetadataArgs) ToManagementZoneMetadataPtrOutputWithContext(ctx context.Context) ManagementZoneMetadataPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneMetadataOutput).ToManagementZoneMetadataPtrOutputWithContext(ctx) +func (i MaintenanceScheduleOnceRecurrenceArgs) ToMaintenanceScheduleOnceRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceScheduleOnceRecurrencePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleOnceRecurrenceOutput).ToMaintenanceScheduleOnceRecurrencePtrOutputWithContext(ctx) } -// ManagementZoneMetadataPtrInput is an input type that accepts ManagementZoneMetadataArgs, ManagementZoneMetadataPtr and ManagementZoneMetadataPtrOutput values. -// You can construct a concrete instance of `ManagementZoneMetadataPtrInput` via: +// MaintenanceScheduleOnceRecurrencePtrInput is an input type that accepts MaintenanceScheduleOnceRecurrenceArgs, MaintenanceScheduleOnceRecurrencePtr and MaintenanceScheduleOnceRecurrencePtrOutput values. +// You can construct a concrete instance of `MaintenanceScheduleOnceRecurrencePtrInput` via: // -// ManagementZoneMetadataArgs{...} +// MaintenanceScheduleOnceRecurrenceArgs{...} // // or: // // nil -type ManagementZoneMetadataPtrInput interface { +type MaintenanceScheduleOnceRecurrencePtrInput interface { pulumi.Input - ToManagementZoneMetadataPtrOutput() ManagementZoneMetadataPtrOutput - ToManagementZoneMetadataPtrOutputWithContext(context.Context) ManagementZoneMetadataPtrOutput + ToMaintenanceScheduleOnceRecurrencePtrOutput() MaintenanceScheduleOnceRecurrencePtrOutput + ToMaintenanceScheduleOnceRecurrencePtrOutputWithContext(context.Context) MaintenanceScheduleOnceRecurrencePtrOutput } -type managementZoneMetadataPtrType ManagementZoneMetadataArgs +type maintenanceScheduleOnceRecurrencePtrType MaintenanceScheduleOnceRecurrenceArgs -func ManagementZoneMetadataPtr(v *ManagementZoneMetadataArgs) ManagementZoneMetadataPtrInput { - return (*managementZoneMetadataPtrType)(v) +func MaintenanceScheduleOnceRecurrencePtr(v *MaintenanceScheduleOnceRecurrenceArgs) MaintenanceScheduleOnceRecurrencePtrInput { + return (*maintenanceScheduleOnceRecurrencePtrType)(v) } -func (*managementZoneMetadataPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**ManagementZoneMetadata)(nil)).Elem() +func (*maintenanceScheduleOnceRecurrencePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleOnceRecurrence)(nil)).Elem() } -func (i *managementZoneMetadataPtrType) ToManagementZoneMetadataPtrOutput() ManagementZoneMetadataPtrOutput { - return i.ToManagementZoneMetadataPtrOutputWithContext(context.Background()) +func (i *maintenanceScheduleOnceRecurrencePtrType) ToMaintenanceScheduleOnceRecurrencePtrOutput() MaintenanceScheduleOnceRecurrencePtrOutput { + return i.ToMaintenanceScheduleOnceRecurrencePtrOutputWithContext(context.Background()) } -func (i *managementZoneMetadataPtrType) ToManagementZoneMetadataPtrOutputWithContext(ctx context.Context) ManagementZoneMetadataPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneMetadataPtrOutput) +func (i *maintenanceScheduleOnceRecurrencePtrType) ToMaintenanceScheduleOnceRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceScheduleOnceRecurrencePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleOnceRecurrencePtrOutput) } -type ManagementZoneMetadataOutput struct{ *pulumi.OutputState } +type MaintenanceScheduleOnceRecurrenceOutput struct{ *pulumi.OutputState } -func (ManagementZoneMetadataOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneMetadata)(nil)).Elem() +func (MaintenanceScheduleOnceRecurrenceOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleOnceRecurrence)(nil)).Elem() } -func (o ManagementZoneMetadataOutput) ToManagementZoneMetadataOutput() ManagementZoneMetadataOutput { +func (o MaintenanceScheduleOnceRecurrenceOutput) ToMaintenanceScheduleOnceRecurrenceOutput() MaintenanceScheduleOnceRecurrenceOutput { return o } -func (o ManagementZoneMetadataOutput) ToManagementZoneMetadataOutputWithContext(ctx context.Context) ManagementZoneMetadataOutput { +func (o MaintenanceScheduleOnceRecurrenceOutput) ToMaintenanceScheduleOnceRecurrenceOutputWithContext(ctx context.Context) MaintenanceScheduleOnceRecurrenceOutput { return o } -func (o ManagementZoneMetadataOutput) ToManagementZoneMetadataPtrOutput() ManagementZoneMetadataPtrOutput { - return o.ToManagementZoneMetadataPtrOutputWithContext(context.Background()) +func (o MaintenanceScheduleOnceRecurrenceOutput) ToMaintenanceScheduleOnceRecurrencePtrOutput() MaintenanceScheduleOnceRecurrencePtrOutput { + return o.ToMaintenanceScheduleOnceRecurrencePtrOutputWithContext(context.Background()) } -func (o ManagementZoneMetadataOutput) ToManagementZoneMetadataPtrOutputWithContext(ctx context.Context) ManagementZoneMetadataPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v ManagementZoneMetadata) *ManagementZoneMetadata { +func (o MaintenanceScheduleOnceRecurrenceOutput) ToMaintenanceScheduleOnceRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceScheduleOnceRecurrencePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceScheduleOnceRecurrence) *MaintenanceScheduleOnceRecurrence { return &v - }).(ManagementZoneMetadataPtrOutput) + }).(MaintenanceScheduleOnceRecurrencePtrOutput) } -func (o ManagementZoneMetadataOutput) ClusterVersion() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneMetadata) *string { return v.ClusterVersion }).(pulumi.StringPtrOutput) +func (o MaintenanceScheduleOnceRecurrenceOutput) EndTime() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleOnceRecurrence) string { return v.EndTime }).(pulumi.StringOutput) } -func (o ManagementZoneMetadataOutput) ConfigurationVersions() pulumi.IntArrayOutput { - return o.ApplyT(func(v ManagementZoneMetadata) []int { return v.ConfigurationVersions }).(pulumi.IntArrayOutput) +func (o MaintenanceScheduleOnceRecurrenceOutput) StartTime() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleOnceRecurrence) string { return v.StartTime }).(pulumi.StringOutput) } -func (o ManagementZoneMetadataOutput) CurrentConfigurationVersions() pulumi.StringArrayOutput { - return o.ApplyT(func(v ManagementZoneMetadata) []string { return v.CurrentConfigurationVersions }).(pulumi.StringArrayOutput) +func (o MaintenanceScheduleOnceRecurrenceOutput) TimeZone() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleOnceRecurrence) string { return v.TimeZone }).(pulumi.StringOutput) } -type ManagementZoneMetadataPtrOutput struct{ *pulumi.OutputState } +type MaintenanceScheduleOnceRecurrencePtrOutput struct{ *pulumi.OutputState } -func (ManagementZoneMetadataPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**ManagementZoneMetadata)(nil)).Elem() +func (MaintenanceScheduleOnceRecurrencePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleOnceRecurrence)(nil)).Elem() } -func (o ManagementZoneMetadataPtrOutput) ToManagementZoneMetadataPtrOutput() ManagementZoneMetadataPtrOutput { +func (o MaintenanceScheduleOnceRecurrencePtrOutput) ToMaintenanceScheduleOnceRecurrencePtrOutput() MaintenanceScheduleOnceRecurrencePtrOutput { return o } -func (o ManagementZoneMetadataPtrOutput) ToManagementZoneMetadataPtrOutputWithContext(ctx context.Context) ManagementZoneMetadataPtrOutput { +func (o MaintenanceScheduleOnceRecurrencePtrOutput) ToMaintenanceScheduleOnceRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceScheduleOnceRecurrencePtrOutput { return o } -func (o ManagementZoneMetadataPtrOutput) Elem() ManagementZoneMetadataOutput { - return o.ApplyT(func(v *ManagementZoneMetadata) ManagementZoneMetadata { +func (o MaintenanceScheduleOnceRecurrencePtrOutput) Elem() MaintenanceScheduleOnceRecurrenceOutput { + return o.ApplyT(func(v *MaintenanceScheduleOnceRecurrence) MaintenanceScheduleOnceRecurrence { if v != nil { return *v } - var ret ManagementZoneMetadata + var ret MaintenanceScheduleOnceRecurrence return ret - }).(ManagementZoneMetadataOutput) + }).(MaintenanceScheduleOnceRecurrenceOutput) } -func (o ManagementZoneMetadataPtrOutput) ClusterVersion() pulumi.StringPtrOutput { - return o.ApplyT(func(v *ManagementZoneMetadata) *string { +func (o MaintenanceScheduleOnceRecurrencePtrOutput) EndTime() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleOnceRecurrence) *string { if v == nil { return nil } - return v.ClusterVersion + return &v.EndTime }).(pulumi.StringPtrOutput) } -func (o ManagementZoneMetadataPtrOutput) ConfigurationVersions() pulumi.IntArrayOutput { - return o.ApplyT(func(v *ManagementZoneMetadata) []int { +func (o MaintenanceScheduleOnceRecurrencePtrOutput) StartTime() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleOnceRecurrence) *string { if v == nil { return nil } - return v.ConfigurationVersions - }).(pulumi.IntArrayOutput) + return &v.StartTime + }).(pulumi.StringPtrOutput) } -func (o ManagementZoneMetadataPtrOutput) CurrentConfigurationVersions() pulumi.StringArrayOutput { - return o.ApplyT(func(v *ManagementZoneMetadata) []string { +func (o MaintenanceScheduleOnceRecurrencePtrOutput) TimeZone() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleOnceRecurrence) *string { if v == nil { return nil } - return v.CurrentConfigurationVersions - }).(pulumi.StringArrayOutput) + return &v.TimeZone + }).(pulumi.StringPtrOutput) } -type ManagementZoneRule struct { - Conditions []ManagementZoneRuleCondition `pulumi:"conditions"` - Enabled *bool `pulumi:"enabled"` - PropagationTypes []string `pulumi:"propagationTypes"` - Type string `pulumi:"type"` - Unknowns *string `pulumi:"unknowns"` +type MaintenanceScheduleWeeklyRecurrence struct { + DayOfWeek string `pulumi:"dayOfWeek"` + RecurrenceRange MaintenanceScheduleWeeklyRecurrenceRecurrenceRange `pulumi:"recurrenceRange"` + TimeWindow MaintenanceScheduleWeeklyRecurrenceTimeWindow `pulumi:"timeWindow"` } -// ManagementZoneRuleInput is an input type that accepts ManagementZoneRuleArgs and ManagementZoneRuleOutput values. -// You can construct a concrete instance of `ManagementZoneRuleInput` via: +// MaintenanceScheduleWeeklyRecurrenceInput is an input type that accepts MaintenanceScheduleWeeklyRecurrenceArgs and MaintenanceScheduleWeeklyRecurrenceOutput values. +// You can construct a concrete instance of `MaintenanceScheduleWeeklyRecurrenceInput` via: // -// ManagementZoneRuleArgs{...} -type ManagementZoneRuleInput interface { +// MaintenanceScheduleWeeklyRecurrenceArgs{...} +type MaintenanceScheduleWeeklyRecurrenceInput interface { pulumi.Input - ToManagementZoneRuleOutput() ManagementZoneRuleOutput - ToManagementZoneRuleOutputWithContext(context.Context) ManagementZoneRuleOutput + ToMaintenanceScheduleWeeklyRecurrenceOutput() MaintenanceScheduleWeeklyRecurrenceOutput + ToMaintenanceScheduleWeeklyRecurrenceOutputWithContext(context.Context) MaintenanceScheduleWeeklyRecurrenceOutput +} + +type MaintenanceScheduleWeeklyRecurrenceArgs struct { + DayOfWeek pulumi.StringInput `pulumi:"dayOfWeek"` + RecurrenceRange MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeInput `pulumi:"recurrenceRange"` + TimeWindow MaintenanceScheduleWeeklyRecurrenceTimeWindowInput `pulumi:"timeWindow"` } -type ManagementZoneRuleArgs struct { - Conditions ManagementZoneRuleConditionArrayInput `pulumi:"conditions"` - Enabled pulumi.BoolPtrInput `pulumi:"enabled"` - PropagationTypes pulumi.StringArrayInput `pulumi:"propagationTypes"` - Type pulumi.StringInput `pulumi:"type"` - Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` +func (MaintenanceScheduleWeeklyRecurrenceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleWeeklyRecurrence)(nil)).Elem() } -func (ManagementZoneRuleArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRule)(nil)).Elem() +func (i MaintenanceScheduleWeeklyRecurrenceArgs) ToMaintenanceScheduleWeeklyRecurrenceOutput() MaintenanceScheduleWeeklyRecurrenceOutput { + return i.ToMaintenanceScheduleWeeklyRecurrenceOutputWithContext(context.Background()) } -func (i ManagementZoneRuleArgs) ToManagementZoneRuleOutput() ManagementZoneRuleOutput { - return i.ToManagementZoneRuleOutputWithContext(context.Background()) +func (i MaintenanceScheduleWeeklyRecurrenceArgs) ToMaintenanceScheduleWeeklyRecurrenceOutputWithContext(ctx context.Context) MaintenanceScheduleWeeklyRecurrenceOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleWeeklyRecurrenceOutput) } -func (i ManagementZoneRuleArgs) ToManagementZoneRuleOutputWithContext(ctx context.Context) ManagementZoneRuleOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleOutput) +func (i MaintenanceScheduleWeeklyRecurrenceArgs) ToMaintenanceScheduleWeeklyRecurrencePtrOutput() MaintenanceScheduleWeeklyRecurrencePtrOutput { + return i.ToMaintenanceScheduleWeeklyRecurrencePtrOutputWithContext(context.Background()) } -// ManagementZoneRuleArrayInput is an input type that accepts ManagementZoneRuleArray and ManagementZoneRuleArrayOutput values. -// You can construct a concrete instance of `ManagementZoneRuleArrayInput` via: +func (i MaintenanceScheduleWeeklyRecurrenceArgs) ToMaintenanceScheduleWeeklyRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceScheduleWeeklyRecurrencePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleWeeklyRecurrenceOutput).ToMaintenanceScheduleWeeklyRecurrencePtrOutputWithContext(ctx) +} + +// MaintenanceScheduleWeeklyRecurrencePtrInput is an input type that accepts MaintenanceScheduleWeeklyRecurrenceArgs, MaintenanceScheduleWeeklyRecurrencePtr and MaintenanceScheduleWeeklyRecurrencePtrOutput values. +// You can construct a concrete instance of `MaintenanceScheduleWeeklyRecurrencePtrInput` via: +// +// MaintenanceScheduleWeeklyRecurrenceArgs{...} +// +// or: // -// ManagementZoneRuleArray{ ManagementZoneRuleArgs{...} } -type ManagementZoneRuleArrayInput interface { +// nil +type MaintenanceScheduleWeeklyRecurrencePtrInput interface { pulumi.Input - ToManagementZoneRuleArrayOutput() ManagementZoneRuleArrayOutput - ToManagementZoneRuleArrayOutputWithContext(context.Context) ManagementZoneRuleArrayOutput + ToMaintenanceScheduleWeeklyRecurrencePtrOutput() MaintenanceScheduleWeeklyRecurrencePtrOutput + ToMaintenanceScheduleWeeklyRecurrencePtrOutputWithContext(context.Context) MaintenanceScheduleWeeklyRecurrencePtrOutput } -type ManagementZoneRuleArray []ManagementZoneRuleInput +type maintenanceScheduleWeeklyRecurrencePtrType MaintenanceScheduleWeeklyRecurrenceArgs + +func MaintenanceScheduleWeeklyRecurrencePtr(v *MaintenanceScheduleWeeklyRecurrenceArgs) MaintenanceScheduleWeeklyRecurrencePtrInput { + return (*maintenanceScheduleWeeklyRecurrencePtrType)(v) +} -func (ManagementZoneRuleArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRule)(nil)).Elem() +func (*maintenanceScheduleWeeklyRecurrencePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleWeeklyRecurrence)(nil)).Elem() } -func (i ManagementZoneRuleArray) ToManagementZoneRuleArrayOutput() ManagementZoneRuleArrayOutput { - return i.ToManagementZoneRuleArrayOutputWithContext(context.Background()) +func (i *maintenanceScheduleWeeklyRecurrencePtrType) ToMaintenanceScheduleWeeklyRecurrencePtrOutput() MaintenanceScheduleWeeklyRecurrencePtrOutput { + return i.ToMaintenanceScheduleWeeklyRecurrencePtrOutputWithContext(context.Background()) } -func (i ManagementZoneRuleArray) ToManagementZoneRuleArrayOutputWithContext(ctx context.Context) ManagementZoneRuleArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleArrayOutput) +func (i *maintenanceScheduleWeeklyRecurrencePtrType) ToMaintenanceScheduleWeeklyRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceScheduleWeeklyRecurrencePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleWeeklyRecurrencePtrOutput) } -type ManagementZoneRuleOutput struct{ *pulumi.OutputState } +type MaintenanceScheduleWeeklyRecurrenceOutput struct{ *pulumi.OutputState } -func (ManagementZoneRuleOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRule)(nil)).Elem() +func (MaintenanceScheduleWeeklyRecurrenceOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleWeeklyRecurrence)(nil)).Elem() } -func (o ManagementZoneRuleOutput) ToManagementZoneRuleOutput() ManagementZoneRuleOutput { +func (o MaintenanceScheduleWeeklyRecurrenceOutput) ToMaintenanceScheduleWeeklyRecurrenceOutput() MaintenanceScheduleWeeklyRecurrenceOutput { return o } -func (o ManagementZoneRuleOutput) ToManagementZoneRuleOutputWithContext(ctx context.Context) ManagementZoneRuleOutput { +func (o MaintenanceScheduleWeeklyRecurrenceOutput) ToMaintenanceScheduleWeeklyRecurrenceOutputWithContext(ctx context.Context) MaintenanceScheduleWeeklyRecurrenceOutput { return o } -func (o ManagementZoneRuleOutput) Conditions() ManagementZoneRuleConditionArrayOutput { - return o.ApplyT(func(v ManagementZoneRule) []ManagementZoneRuleCondition { return v.Conditions }).(ManagementZoneRuleConditionArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceOutput) ToMaintenanceScheduleWeeklyRecurrencePtrOutput() MaintenanceScheduleWeeklyRecurrencePtrOutput { + return o.ToMaintenanceScheduleWeeklyRecurrencePtrOutputWithContext(context.Background()) } -func (o ManagementZoneRuleOutput) Enabled() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ManagementZoneRule) *bool { return v.Enabled }).(pulumi.BoolPtrOutput) +func (o MaintenanceScheduleWeeklyRecurrenceOutput) ToMaintenanceScheduleWeeklyRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceScheduleWeeklyRecurrencePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceScheduleWeeklyRecurrence) *MaintenanceScheduleWeeklyRecurrence { + return &v + }).(MaintenanceScheduleWeeklyRecurrencePtrOutput) } -func (o ManagementZoneRuleOutput) PropagationTypes() pulumi.StringArrayOutput { - return o.ApplyT(func(v ManagementZoneRule) []string { return v.PropagationTypes }).(pulumi.StringArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceOutput) DayOfWeek() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleWeeklyRecurrence) string { return v.DayOfWeek }).(pulumi.StringOutput) } -func (o ManagementZoneRuleOutput) Type() pulumi.StringOutput { - return o.ApplyT(func(v ManagementZoneRule) string { return v.Type }).(pulumi.StringOutput) +func (o MaintenanceScheduleWeeklyRecurrenceOutput) RecurrenceRange() MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput { + return o.ApplyT(func(v MaintenanceScheduleWeeklyRecurrence) MaintenanceScheduleWeeklyRecurrenceRecurrenceRange { + return v.RecurrenceRange + }).(MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput) } -func (o ManagementZoneRuleOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRule) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +func (o MaintenanceScheduleWeeklyRecurrenceOutput) TimeWindow() MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput { + return o.ApplyT(func(v MaintenanceScheduleWeeklyRecurrence) MaintenanceScheduleWeeklyRecurrenceTimeWindow { + return v.TimeWindow + }).(MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput) } -type ManagementZoneRuleArrayOutput struct{ *pulumi.OutputState } +type MaintenanceScheduleWeeklyRecurrencePtrOutput struct{ *pulumi.OutputState } -func (ManagementZoneRuleArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRule)(nil)).Elem() +func (MaintenanceScheduleWeeklyRecurrencePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleWeeklyRecurrence)(nil)).Elem() } -func (o ManagementZoneRuleArrayOutput) ToManagementZoneRuleArrayOutput() ManagementZoneRuleArrayOutput { +func (o MaintenanceScheduleWeeklyRecurrencePtrOutput) ToMaintenanceScheduleWeeklyRecurrencePtrOutput() MaintenanceScheduleWeeklyRecurrencePtrOutput { return o } -func (o ManagementZoneRuleArrayOutput) ToManagementZoneRuleArrayOutputWithContext(ctx context.Context) ManagementZoneRuleArrayOutput { +func (o MaintenanceScheduleWeeklyRecurrencePtrOutput) ToMaintenanceScheduleWeeklyRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceScheduleWeeklyRecurrencePtrOutput { return o } -func (o ManagementZoneRuleArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRule { - return vs[0].([]ManagementZoneRule)[vs[1].(int)] - }).(ManagementZoneRuleOutput) -} - -type ManagementZoneRuleCondition struct { - // Deprecated: You should use 'application_type' instead of 'application_type_comparison'. This attribute still exists for backwards compatibility. - ApplicationTypeComparisons []ManagementZoneRuleConditionApplicationTypeComparison `pulumi:"applicationTypeComparisons"` - ApplicationTypes []ManagementZoneRuleConditionApplicationType `pulumi:"applicationTypes"` - AzureComputeModeComparisons []ManagementZoneRuleConditionAzureComputeModeComparison `pulumi:"azureComputeModeComparisons"` - // Deprecated: You should use 'azure_compute_mode' instead of 'azure_compute_mode_comparison'. This attribute still exists for backwards compatibility. - AzureComputeModes []ManagementZoneRuleConditionAzureComputeMode `pulumi:"azureComputeModes"` - // Deprecated: You should use 'azure_sku' instead of 'azure_sku_comparision'. This attribute still exists for backwards compatibility. - AzureSkuComparisions []ManagementZoneRuleConditionAzureSkuComparision `pulumi:"azureSkuComparisions"` - AzureSkus []ManagementZoneRuleConditionAzureSkus `pulumi:"azureSkus"` - // Deprecated: You should use 'comparison' instead of 'base_comparison_basic'. This attribute still exists for backwards compatibility. - BaseComparisonBasics []ManagementZoneRuleConditionBaseComparisonBasic `pulumi:"baseComparisonBasics"` - // Deprecated: 'base_condition_key' is deprecated. You should use 'key' - BaseConditionKeys []ManagementZoneRuleConditionBaseConditionKey `pulumi:"baseConditionKeys"` - // Deprecated: You should use 'bitness' instead of 'bitness_comparision'. This attribute still exists for backwards compatibility. - BitnessComparisions []ManagementZoneRuleConditionBitnessComparision `pulumi:"bitnessComparisions"` - Bitnesses []ManagementZoneRuleConditionBitness `pulumi:"bitnesses"` - // Deprecated: You should use 'cloud_type' instead of 'cloud_type_comparison'. This attribute still exists for backwards compatibility. - CloudTypeComparisons []ManagementZoneRuleConditionCloudTypeComparison `pulumi:"cloudTypeComparisons"` - CloudTypes []ManagementZoneRuleConditionCloudType `pulumi:"cloudTypes"` - Comparisons []ManagementZoneRuleConditionComparison `pulumi:"comparisons"` - // Deprecated: You should use 'custom_application_type' instead of 'custom_application_type_comparison'. This attribute still exists for backwards compatibility. - CustomApplicationTypeComparisons []ManagementZoneRuleConditionCustomApplicationTypeComparison `pulumi:"customApplicationTypeComparisons"` - CustomApplicationTypes []ManagementZoneRuleConditionCustomApplicationType `pulumi:"customApplicationTypes"` - // Deprecated: 'custom_host_metadata_condition_key' is deprecated. You should use 'custom_host_metadata' - CustomHostMetadataConditionKeys []ManagementZoneRuleConditionCustomHostMetadataConditionKey `pulumi:"customHostMetadataConditionKeys"` - CustomHostMetadatas []ManagementZoneRuleConditionCustomHostMetadata `pulumi:"customHostMetadatas"` - // Deprecated: 'custom_process_metadata_condition_key' is deprecated. You should use 'custom_process_metadata' - CustomProcessMetadataConditionKeys []ManagementZoneRuleConditionCustomProcessMetadataConditionKey `pulumi:"customProcessMetadataConditionKeys"` - CustomProcessMetadatas []ManagementZoneRuleConditionCustomProcessMetadata `pulumi:"customProcessMetadatas"` - DatabaseTopologies []ManagementZoneRuleConditionDatabaseTopology `pulumi:"databaseTopologies"` - // Deprecated: You should use 'database_topology' instead of 'database_topology_comparison'. This attribute still exists for backwards compatibility. - DatabaseTopologyComparisons []ManagementZoneRuleConditionDatabaseTopologyComparison `pulumi:"databaseTopologyComparisons"` - // Deprecated: You should use 'dcrum_decoder' instead of 'dcrum_decoder_comparison'. This attribute still exists for backwards compatibility. - DcrumDecoderComparisons []ManagementZoneRuleConditionDcrumDecoderComparison `pulumi:"dcrumDecoderComparisons"` - DcrumDecoders []ManagementZoneRuleConditionDcrumDecoder `pulumi:"dcrumDecoders"` - Entities []ManagementZoneRuleConditionEntity `pulumi:"entities"` - // Deprecated: You should use 'entity' instead of 'entity_id_comparison'. This attribute still exists for backwards compatibility. - EntityIdComparisons []ManagementZoneRuleConditionEntityIdComparison `pulumi:"entityIdComparisons"` - HostTeches []ManagementZoneRuleConditionHostTech `pulumi:"hostTeches"` - // Deprecated: `hypervisor_type_comparision` is deprecated. Use `hypervisor` instead - HypervisorTypeComparisions []ManagementZoneRuleConditionHypervisorTypeComparision `pulumi:"hypervisorTypeComparisions"` - Hypervisors []ManagementZoneRuleConditionHypervisor `pulumi:"hypervisors"` - // Deprecated: You should use 'indexed_name' instead of 'indexed_name_comparison'. This attribute still exists for backwards compatibility. - IndexedNameComparisons []ManagementZoneRuleConditionIndexedNameComparison `pulumi:"indexedNameComparisons"` - IndexedNames []ManagementZoneRuleConditionIndexedName `pulumi:"indexedNames"` - // Deprecated: You should use 'indexed_string' instead of 'indexed_string_comparison'. This attribute still exists for backwards compatibility. - IndexedStringComparisons []ManagementZoneRuleConditionIndexedStringComparison `pulumi:"indexedStringComparisons"` - IndexedStrings []ManagementZoneRuleConditionIndexedString `pulumi:"indexedStrings"` - // Deprecated: You should use 'indexed_tag' instead of 'indexed_tag_comparison'. This attribute still exists for backwards compatibility. - IndexedTagComparisons []ManagementZoneRuleConditionIndexedTagComparison `pulumi:"indexedTagComparisons"` - IndexedTags []ManagementZoneRuleConditionIndexedTag `pulumi:"indexedTags"` - // Deprecated: You should use 'integer' instead of 'integer_comparison'. This attribute still exists for backwards compatibility. - IntegerComparisons []ManagementZoneRuleConditionIntegerComparison `pulumi:"integerComparisons"` - Integers []ManagementZoneRuleConditionInteger `pulumi:"integers"` - // Deprecated: You should use 'ipaddress' instead of 'ipaddress_comparison'. This attribute still exists for backwards compatibility. - IpaddressComparisons []ManagementZoneRuleConditionIpaddressComparison `pulumi:"ipaddressComparisons"` - Ipaddresses []ManagementZoneRuleConditionIpaddress `pulumi:"ipaddresses"` - Keys []ManagementZoneRuleConditionKey `pulumi:"keys"` - // Deprecated: You should use 'mobile_platform' instead of 'mobile_platform_comparison'. This attribute still exists for backwards compatibility. - MobilePlatformComparisons []ManagementZoneRuleConditionMobilePlatformComparison `pulumi:"mobilePlatformComparisons"` - MobilePlatforms []ManagementZoneRuleConditionMobilePlatform `pulumi:"mobilePlatforms"` - OsArches []ManagementZoneRuleConditionOsArch `pulumi:"osArches"` - OsTypes []ManagementZoneRuleConditionOsType `pulumi:"osTypes"` - // Deprecated: You should use 'os_arch' instead of 'osarchitecture_comparison'. This attribute still exists for backwards compatibility. - OsarchitectureComparisons []ManagementZoneRuleConditionOsarchitectureComparison `pulumi:"osarchitectureComparisons"` - // Deprecated: You should use 'os_type' instead of 'ostype_comparison'. This attribute still exists for backwards compatibility. - OstypeComparisons []ManagementZoneRuleConditionOstypeComparison `pulumi:"ostypeComparisons"` - // Deprecated: You should use 'paas_type' instead of 'paas_type_comparison'. This attribute still exists for backwards compatibility. - PaasTypeComparisons []ManagementZoneRuleConditionPaasTypeComparison `pulumi:"paasTypeComparisons"` - PaasTypes []ManagementZoneRuleConditionPaasType `pulumi:"paasTypes"` - // Deprecated: 'process_metadata_condition_key' is deprecated. You should use 'process_metadata' - ProcessMetadataConditionKeys []ManagementZoneRuleConditionProcessMetadataConditionKey `pulumi:"processMetadataConditionKeys"` - ProcessMetadatas []ManagementZoneRuleConditionProcessMetadata `pulumi:"processMetadatas"` - ServiceTopologies []ManagementZoneRuleConditionServiceTopology `pulumi:"serviceTopologies"` - // Deprecated: You should use 'service_topology' instead of 'service_topology_comparison'. This attribute still exists for backwards compatibility. - ServiceTopologyComparisons []ManagementZoneRuleConditionServiceTopologyComparison `pulumi:"serviceTopologyComparisons"` - // Deprecated: You should use 'service_type' instead of 'service_type_comparison'. This attribute still exists for backwards compatibility. - ServiceTypeComparisons []ManagementZoneRuleConditionServiceTypeComparison `pulumi:"serviceTypeComparisons"` - ServiceTypes []ManagementZoneRuleConditionServiceType `pulumi:"serviceTypes"` - // Deprecated: You should use 'host_tech' instead of 'simple_host_tech_comparison'. This attribute still exists for backwards compatibility. - SimpleHostTechComparisons []ManagementZoneRuleConditionSimpleHostTechComparison `pulumi:"simpleHostTechComparisons"` - // Deprecated: You should use 'tech' instead of 'simple_tech_comparison'. This attribute still exists for backwards compatibility. - SimpleTechComparisons []ManagementZoneRuleConditionSimpleTechComparison `pulumi:"simpleTechComparisons"` - // Deprecated: You should use 'string' instead of 'string_comparison'. This attribute still exists for backwards compatibility. - StringComparisons []ManagementZoneRuleConditionStringComparison `pulumi:"stringComparisons"` - // Deprecated: 'string_condition_key' is deprecated. You should use 'string_key' - StringConditionKeys []ManagementZoneRuleConditionStringConditionKey `pulumi:"stringConditionKeys"` - StringKeys []ManagementZoneRuleConditionStringKey `pulumi:"stringKeys"` - Strings []ManagementZoneRuleConditionString `pulumi:"strings"` - // Deprecated: You should use 'synthetic_engine' instead of 'synthetic_engine_type_comparison'. This attribute still exists for backwards compatibility. - SyntheticEngineTypeComparisons []ManagementZoneRuleConditionSyntheticEngineTypeComparison `pulumi:"syntheticEngineTypeComparisons"` - SyntheticEngines []ManagementZoneRuleConditionSyntheticEngine `pulumi:"syntheticEngines"` - // Deprecated: You should use 'tag' instead of 'tag_comparison'. This attribute still exists for backwards compatibility. - TagComparisons []ManagementZoneRuleConditionTagComparison `pulumi:"tagComparisons"` - Tags []ManagementZoneRuleConditionTag `pulumi:"tags"` - Teches []ManagementZoneRuleConditionTech `pulumi:"teches"` - Unknowns *string `pulumi:"unknowns"` +func (o MaintenanceScheduleWeeklyRecurrencePtrOutput) Elem() MaintenanceScheduleWeeklyRecurrenceOutput { + return o.ApplyT(func(v *MaintenanceScheduleWeeklyRecurrence) MaintenanceScheduleWeeklyRecurrence { + if v != nil { + return *v + } + var ret MaintenanceScheduleWeeklyRecurrence + return ret + }).(MaintenanceScheduleWeeklyRecurrenceOutput) } -// ManagementZoneRuleConditionInput is an input type that accepts ManagementZoneRuleConditionArgs and ManagementZoneRuleConditionOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionInput` via: -// -// ManagementZoneRuleConditionArgs{...} -type ManagementZoneRuleConditionInput interface { - pulumi.Input - - ToManagementZoneRuleConditionOutput() ManagementZoneRuleConditionOutput - ToManagementZoneRuleConditionOutputWithContext(context.Context) ManagementZoneRuleConditionOutput -} - -type ManagementZoneRuleConditionArgs struct { - // Deprecated: You should use 'application_type' instead of 'application_type_comparison'. This attribute still exists for backwards compatibility. - ApplicationTypeComparisons ManagementZoneRuleConditionApplicationTypeComparisonArrayInput `pulumi:"applicationTypeComparisons"` - ApplicationTypes ManagementZoneRuleConditionApplicationTypeArrayInput `pulumi:"applicationTypes"` - AzureComputeModeComparisons ManagementZoneRuleConditionAzureComputeModeComparisonArrayInput `pulumi:"azureComputeModeComparisons"` - // Deprecated: You should use 'azure_compute_mode' instead of 'azure_compute_mode_comparison'. This attribute still exists for backwards compatibility. - AzureComputeModes ManagementZoneRuleConditionAzureComputeModeArrayInput `pulumi:"azureComputeModes"` - // Deprecated: You should use 'azure_sku' instead of 'azure_sku_comparision'. This attribute still exists for backwards compatibility. - AzureSkuComparisions ManagementZoneRuleConditionAzureSkuComparisionArrayInput `pulumi:"azureSkuComparisions"` - AzureSkus ManagementZoneRuleConditionAzureSkusArrayInput `pulumi:"azureSkus"` - // Deprecated: You should use 'comparison' instead of 'base_comparison_basic'. This attribute still exists for backwards compatibility. - BaseComparisonBasics ManagementZoneRuleConditionBaseComparisonBasicArrayInput `pulumi:"baseComparisonBasics"` - // Deprecated: 'base_condition_key' is deprecated. You should use 'key' - BaseConditionKeys ManagementZoneRuleConditionBaseConditionKeyArrayInput `pulumi:"baseConditionKeys"` - // Deprecated: You should use 'bitness' instead of 'bitness_comparision'. This attribute still exists for backwards compatibility. - BitnessComparisions ManagementZoneRuleConditionBitnessComparisionArrayInput `pulumi:"bitnessComparisions"` - Bitnesses ManagementZoneRuleConditionBitnessArrayInput `pulumi:"bitnesses"` - // Deprecated: You should use 'cloud_type' instead of 'cloud_type_comparison'. This attribute still exists for backwards compatibility. - CloudTypeComparisons ManagementZoneRuleConditionCloudTypeComparisonArrayInput `pulumi:"cloudTypeComparisons"` - CloudTypes ManagementZoneRuleConditionCloudTypeArrayInput `pulumi:"cloudTypes"` - Comparisons ManagementZoneRuleConditionComparisonArrayInput `pulumi:"comparisons"` - // Deprecated: You should use 'custom_application_type' instead of 'custom_application_type_comparison'. This attribute still exists for backwards compatibility. - CustomApplicationTypeComparisons ManagementZoneRuleConditionCustomApplicationTypeComparisonArrayInput `pulumi:"customApplicationTypeComparisons"` - CustomApplicationTypes ManagementZoneRuleConditionCustomApplicationTypeArrayInput `pulumi:"customApplicationTypes"` - // Deprecated: 'custom_host_metadata_condition_key' is deprecated. You should use 'custom_host_metadata' - CustomHostMetadataConditionKeys ManagementZoneRuleConditionCustomHostMetadataConditionKeyArrayInput `pulumi:"customHostMetadataConditionKeys"` - CustomHostMetadatas ManagementZoneRuleConditionCustomHostMetadataArrayInput `pulumi:"customHostMetadatas"` - // Deprecated: 'custom_process_metadata_condition_key' is deprecated. You should use 'custom_process_metadata' - CustomProcessMetadataConditionKeys ManagementZoneRuleConditionCustomProcessMetadataConditionKeyArrayInput `pulumi:"customProcessMetadataConditionKeys"` - CustomProcessMetadatas ManagementZoneRuleConditionCustomProcessMetadataArrayInput `pulumi:"customProcessMetadatas"` - DatabaseTopologies ManagementZoneRuleConditionDatabaseTopologyArrayInput `pulumi:"databaseTopologies"` - // Deprecated: You should use 'database_topology' instead of 'database_topology_comparison'. This attribute still exists for backwards compatibility. - DatabaseTopologyComparisons ManagementZoneRuleConditionDatabaseTopologyComparisonArrayInput `pulumi:"databaseTopologyComparisons"` - // Deprecated: You should use 'dcrum_decoder' instead of 'dcrum_decoder_comparison'. This attribute still exists for backwards compatibility. - DcrumDecoderComparisons ManagementZoneRuleConditionDcrumDecoderComparisonArrayInput `pulumi:"dcrumDecoderComparisons"` - DcrumDecoders ManagementZoneRuleConditionDcrumDecoderArrayInput `pulumi:"dcrumDecoders"` - Entities ManagementZoneRuleConditionEntityArrayInput `pulumi:"entities"` - // Deprecated: You should use 'entity' instead of 'entity_id_comparison'. This attribute still exists for backwards compatibility. - EntityIdComparisons ManagementZoneRuleConditionEntityIdComparisonArrayInput `pulumi:"entityIdComparisons"` - HostTeches ManagementZoneRuleConditionHostTechArrayInput `pulumi:"hostTeches"` - // Deprecated: `hypervisor_type_comparision` is deprecated. Use `hypervisor` instead - HypervisorTypeComparisions ManagementZoneRuleConditionHypervisorTypeComparisionArrayInput `pulumi:"hypervisorTypeComparisions"` - Hypervisors ManagementZoneRuleConditionHypervisorArrayInput `pulumi:"hypervisors"` - // Deprecated: You should use 'indexed_name' instead of 'indexed_name_comparison'. This attribute still exists for backwards compatibility. - IndexedNameComparisons ManagementZoneRuleConditionIndexedNameComparisonArrayInput `pulumi:"indexedNameComparisons"` - IndexedNames ManagementZoneRuleConditionIndexedNameArrayInput `pulumi:"indexedNames"` - // Deprecated: You should use 'indexed_string' instead of 'indexed_string_comparison'. This attribute still exists for backwards compatibility. - IndexedStringComparisons ManagementZoneRuleConditionIndexedStringComparisonArrayInput `pulumi:"indexedStringComparisons"` - IndexedStrings ManagementZoneRuleConditionIndexedStringArrayInput `pulumi:"indexedStrings"` - // Deprecated: You should use 'indexed_tag' instead of 'indexed_tag_comparison'. This attribute still exists for backwards compatibility. - IndexedTagComparisons ManagementZoneRuleConditionIndexedTagComparisonArrayInput `pulumi:"indexedTagComparisons"` - IndexedTags ManagementZoneRuleConditionIndexedTagArrayInput `pulumi:"indexedTags"` - // Deprecated: You should use 'integer' instead of 'integer_comparison'. This attribute still exists for backwards compatibility. - IntegerComparisons ManagementZoneRuleConditionIntegerComparisonArrayInput `pulumi:"integerComparisons"` - Integers ManagementZoneRuleConditionIntegerArrayInput `pulumi:"integers"` - // Deprecated: You should use 'ipaddress' instead of 'ipaddress_comparison'. This attribute still exists for backwards compatibility. - IpaddressComparisons ManagementZoneRuleConditionIpaddressComparisonArrayInput `pulumi:"ipaddressComparisons"` - Ipaddresses ManagementZoneRuleConditionIpaddressArrayInput `pulumi:"ipaddresses"` - Keys ManagementZoneRuleConditionKeyArrayInput `pulumi:"keys"` - // Deprecated: You should use 'mobile_platform' instead of 'mobile_platform_comparison'. This attribute still exists for backwards compatibility. - MobilePlatformComparisons ManagementZoneRuleConditionMobilePlatformComparisonArrayInput `pulumi:"mobilePlatformComparisons"` - MobilePlatforms ManagementZoneRuleConditionMobilePlatformArrayInput `pulumi:"mobilePlatforms"` - OsArches ManagementZoneRuleConditionOsArchArrayInput `pulumi:"osArches"` - OsTypes ManagementZoneRuleConditionOsTypeArrayInput `pulumi:"osTypes"` - // Deprecated: You should use 'os_arch' instead of 'osarchitecture_comparison'. This attribute still exists for backwards compatibility. - OsarchitectureComparisons ManagementZoneRuleConditionOsarchitectureComparisonArrayInput `pulumi:"osarchitectureComparisons"` - // Deprecated: You should use 'os_type' instead of 'ostype_comparison'. This attribute still exists for backwards compatibility. - OstypeComparisons ManagementZoneRuleConditionOstypeComparisonArrayInput `pulumi:"ostypeComparisons"` - // Deprecated: You should use 'paas_type' instead of 'paas_type_comparison'. This attribute still exists for backwards compatibility. - PaasTypeComparisons ManagementZoneRuleConditionPaasTypeComparisonArrayInput `pulumi:"paasTypeComparisons"` - PaasTypes ManagementZoneRuleConditionPaasTypeArrayInput `pulumi:"paasTypes"` - // Deprecated: 'process_metadata_condition_key' is deprecated. You should use 'process_metadata' - ProcessMetadataConditionKeys ManagementZoneRuleConditionProcessMetadataConditionKeyArrayInput `pulumi:"processMetadataConditionKeys"` - ProcessMetadatas ManagementZoneRuleConditionProcessMetadataArrayInput `pulumi:"processMetadatas"` - ServiceTopologies ManagementZoneRuleConditionServiceTopologyArrayInput `pulumi:"serviceTopologies"` - // Deprecated: You should use 'service_topology' instead of 'service_topology_comparison'. This attribute still exists for backwards compatibility. - ServiceTopologyComparisons ManagementZoneRuleConditionServiceTopologyComparisonArrayInput `pulumi:"serviceTopologyComparisons"` - // Deprecated: You should use 'service_type' instead of 'service_type_comparison'. This attribute still exists for backwards compatibility. - ServiceTypeComparisons ManagementZoneRuleConditionServiceTypeComparisonArrayInput `pulumi:"serviceTypeComparisons"` - ServiceTypes ManagementZoneRuleConditionServiceTypeArrayInput `pulumi:"serviceTypes"` - // Deprecated: You should use 'host_tech' instead of 'simple_host_tech_comparison'. This attribute still exists for backwards compatibility. - SimpleHostTechComparisons ManagementZoneRuleConditionSimpleHostTechComparisonArrayInput `pulumi:"simpleHostTechComparisons"` - // Deprecated: You should use 'tech' instead of 'simple_tech_comparison'. This attribute still exists for backwards compatibility. - SimpleTechComparisons ManagementZoneRuleConditionSimpleTechComparisonArrayInput `pulumi:"simpleTechComparisons"` - // Deprecated: You should use 'string' instead of 'string_comparison'. This attribute still exists for backwards compatibility. - StringComparisons ManagementZoneRuleConditionStringComparisonArrayInput `pulumi:"stringComparisons"` - // Deprecated: 'string_condition_key' is deprecated. You should use 'string_key' - StringConditionKeys ManagementZoneRuleConditionStringConditionKeyArrayInput `pulumi:"stringConditionKeys"` - StringKeys ManagementZoneRuleConditionStringKeyArrayInput `pulumi:"stringKeys"` - Strings ManagementZoneRuleConditionStringArrayInput `pulumi:"strings"` - // Deprecated: You should use 'synthetic_engine' instead of 'synthetic_engine_type_comparison'. This attribute still exists for backwards compatibility. - SyntheticEngineTypeComparisons ManagementZoneRuleConditionSyntheticEngineTypeComparisonArrayInput `pulumi:"syntheticEngineTypeComparisons"` - SyntheticEngines ManagementZoneRuleConditionSyntheticEngineArrayInput `pulumi:"syntheticEngines"` - // Deprecated: You should use 'tag' instead of 'tag_comparison'. This attribute still exists for backwards compatibility. - TagComparisons ManagementZoneRuleConditionTagComparisonArrayInput `pulumi:"tagComparisons"` - Tags ManagementZoneRuleConditionTagArrayInput `pulumi:"tags"` - Teches ManagementZoneRuleConditionTechArrayInput `pulumi:"teches"` - Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` +func (o MaintenanceScheduleWeeklyRecurrencePtrOutput) DayOfWeek() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleWeeklyRecurrence) *string { + if v == nil { + return nil + } + return &v.DayOfWeek + }).(pulumi.StringPtrOutput) } -func (ManagementZoneRuleConditionArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleCondition)(nil)).Elem() +func (o MaintenanceScheduleWeeklyRecurrencePtrOutput) RecurrenceRange() MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleWeeklyRecurrence) *MaintenanceScheduleWeeklyRecurrenceRecurrenceRange { + if v == nil { + return nil + } + return &v.RecurrenceRange + }).(MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput) } -func (i ManagementZoneRuleConditionArgs) ToManagementZoneRuleConditionOutput() ManagementZoneRuleConditionOutput { - return i.ToManagementZoneRuleConditionOutputWithContext(context.Background()) +func (o MaintenanceScheduleWeeklyRecurrencePtrOutput) TimeWindow() MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleWeeklyRecurrence) *MaintenanceScheduleWeeklyRecurrenceTimeWindow { + if v == nil { + return nil + } + return &v.TimeWindow + }).(MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput) } -func (i ManagementZoneRuleConditionArgs) ToManagementZoneRuleConditionOutputWithContext(ctx context.Context) ManagementZoneRuleConditionOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionOutput) +type MaintenanceScheduleWeeklyRecurrenceRecurrenceRange struct { + EndDate string `pulumi:"endDate"` + StartDate string `pulumi:"startDate"` } -// ManagementZoneRuleConditionArrayInput is an input type that accepts ManagementZoneRuleConditionArray and ManagementZoneRuleConditionArrayOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionArrayInput` via: +// MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeInput is an input type that accepts MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs and MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput values. +// You can construct a concrete instance of `MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeInput` via: // -// ManagementZoneRuleConditionArray{ ManagementZoneRuleConditionArgs{...} } -type ManagementZoneRuleConditionArrayInput interface { +// MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs{...} +type MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeInput interface { pulumi.Input - ToManagementZoneRuleConditionArrayOutput() ManagementZoneRuleConditionArrayOutput - ToManagementZoneRuleConditionArrayOutputWithContext(context.Context) ManagementZoneRuleConditionArrayOutput + ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput() MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput + ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutputWithContext(context.Context) MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput } -type ManagementZoneRuleConditionArray []ManagementZoneRuleConditionInput - -func (ManagementZoneRuleConditionArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleCondition)(nil)).Elem() +type MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs struct { + EndDate pulumi.StringInput `pulumi:"endDate"` + StartDate pulumi.StringInput `pulumi:"startDate"` } -func (i ManagementZoneRuleConditionArray) ToManagementZoneRuleConditionArrayOutput() ManagementZoneRuleConditionArrayOutput { - return i.ToManagementZoneRuleConditionArrayOutputWithContext(context.Background()) +func (MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleWeeklyRecurrenceRecurrenceRange)(nil)).Elem() } -func (i ManagementZoneRuleConditionArray) ToManagementZoneRuleConditionArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionArrayOutput) +func (i MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs) ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput() MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput { + return i.ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutputWithContext(context.Background()) } -type ManagementZoneRuleConditionOutput struct{ *pulumi.OutputState } - -func (ManagementZoneRuleConditionOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleCondition)(nil)).Elem() +func (i MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs) ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutputWithContext(ctx context.Context) MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput) } -func (o ManagementZoneRuleConditionOutput) ToManagementZoneRuleConditionOutput() ManagementZoneRuleConditionOutput { - return o +func (i MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs) ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput() MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput { + return i.ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutputWithContext(context.Background()) } -func (o ManagementZoneRuleConditionOutput) ToManagementZoneRuleConditionOutputWithContext(ctx context.Context) ManagementZoneRuleConditionOutput { - return o +func (i MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs) ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutputWithContext(ctx context.Context) MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput).ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutputWithContext(ctx) } -// Deprecated: You should use 'application_type' instead of 'application_type_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) ApplicationTypeComparisons() ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionApplicationTypeComparison { - return v.ApplicationTypeComparisons - }).(ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput) -} - -func (o ManagementZoneRuleConditionOutput) ApplicationTypes() ManagementZoneRuleConditionApplicationTypeArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionApplicationType { - return v.ApplicationTypes - }).(ManagementZoneRuleConditionApplicationTypeArrayOutput) -} - -func (o ManagementZoneRuleConditionOutput) AzureComputeModeComparisons() ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionAzureComputeModeComparison { - return v.AzureComputeModeComparisons - }).(ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput) -} - -// Deprecated: You should use 'azure_compute_mode' instead of 'azure_compute_mode_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) AzureComputeModes() ManagementZoneRuleConditionAzureComputeModeArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionAzureComputeMode { - return v.AzureComputeModes - }).(ManagementZoneRuleConditionAzureComputeModeArrayOutput) -} - -// Deprecated: You should use 'azure_sku' instead of 'azure_sku_comparision'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) AzureSkuComparisions() ManagementZoneRuleConditionAzureSkuComparisionArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionAzureSkuComparision { - return v.AzureSkuComparisions - }).(ManagementZoneRuleConditionAzureSkuComparisionArrayOutput) -} +// MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrInput is an input type that accepts MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs, MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtr and MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput values. +// You can construct a concrete instance of `MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrInput` via: +// +// MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs{...} +// +// or: +// +// nil +type MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrInput interface { + pulumi.Input -func (o ManagementZoneRuleConditionOutput) AzureSkus() ManagementZoneRuleConditionAzureSkusArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionAzureSkus { return v.AzureSkus }).(ManagementZoneRuleConditionAzureSkusArrayOutput) + ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput() MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput + ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutputWithContext(context.Context) MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput } -// Deprecated: You should use 'comparison' instead of 'base_comparison_basic'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) BaseComparisonBasics() ManagementZoneRuleConditionBaseComparisonBasicArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionBaseComparisonBasic { - return v.BaseComparisonBasics - }).(ManagementZoneRuleConditionBaseComparisonBasicArrayOutput) -} +type maintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrType MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs -// Deprecated: 'base_condition_key' is deprecated. You should use 'key' -func (o ManagementZoneRuleConditionOutput) BaseConditionKeys() ManagementZoneRuleConditionBaseConditionKeyArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionBaseConditionKey { - return v.BaseConditionKeys - }).(ManagementZoneRuleConditionBaseConditionKeyArrayOutput) +func MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtr(v *MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs) MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrInput { + return (*maintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrType)(v) } -// Deprecated: You should use 'bitness' instead of 'bitness_comparision'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) BitnessComparisions() ManagementZoneRuleConditionBitnessComparisionArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionBitnessComparision { - return v.BitnessComparisions - }).(ManagementZoneRuleConditionBitnessComparisionArrayOutput) +func (*maintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleWeeklyRecurrenceRecurrenceRange)(nil)).Elem() } -func (o ManagementZoneRuleConditionOutput) Bitnesses() ManagementZoneRuleConditionBitnessArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionBitness { return v.Bitnesses }).(ManagementZoneRuleConditionBitnessArrayOutput) +func (i *maintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrType) ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput() MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput { + return i.ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutputWithContext(context.Background()) } -// Deprecated: You should use 'cloud_type' instead of 'cloud_type_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) CloudTypeComparisons() ManagementZoneRuleConditionCloudTypeComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionCloudTypeComparison { - return v.CloudTypeComparisons - }).(ManagementZoneRuleConditionCloudTypeComparisonArrayOutput) +func (i *maintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrType) ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutputWithContext(ctx context.Context) MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput) } -func (o ManagementZoneRuleConditionOutput) CloudTypes() ManagementZoneRuleConditionCloudTypeArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionCloudType { return v.CloudTypes }).(ManagementZoneRuleConditionCloudTypeArrayOutput) -} +type MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput struct{ *pulumi.OutputState } -func (o ManagementZoneRuleConditionOutput) Comparisons() ManagementZoneRuleConditionComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionComparison { return v.Comparisons }).(ManagementZoneRuleConditionComparisonArrayOutput) +func (MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleWeeklyRecurrenceRecurrenceRange)(nil)).Elem() } -// Deprecated: You should use 'custom_application_type' instead of 'custom_application_type_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) CustomApplicationTypeComparisons() ManagementZoneRuleConditionCustomApplicationTypeComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionCustomApplicationTypeComparison { - return v.CustomApplicationTypeComparisons - }).(ManagementZoneRuleConditionCustomApplicationTypeComparisonArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput) ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput() MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput { + return o } -func (o ManagementZoneRuleConditionOutput) CustomApplicationTypes() ManagementZoneRuleConditionCustomApplicationTypeArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionCustomApplicationType { - return v.CustomApplicationTypes - }).(ManagementZoneRuleConditionCustomApplicationTypeArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput) ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutputWithContext(ctx context.Context) MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput { + return o } -// Deprecated: 'custom_host_metadata_condition_key' is deprecated. You should use 'custom_host_metadata' -func (o ManagementZoneRuleConditionOutput) CustomHostMetadataConditionKeys() ManagementZoneRuleConditionCustomHostMetadataConditionKeyArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionCustomHostMetadataConditionKey { - return v.CustomHostMetadataConditionKeys - }).(ManagementZoneRuleConditionCustomHostMetadataConditionKeyArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput) ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput() MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput { + return o.ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutputWithContext(context.Background()) } -func (o ManagementZoneRuleConditionOutput) CustomHostMetadatas() ManagementZoneRuleConditionCustomHostMetadataArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionCustomHostMetadata { - return v.CustomHostMetadatas - }).(ManagementZoneRuleConditionCustomHostMetadataArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput) ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutputWithContext(ctx context.Context) MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceScheduleWeeklyRecurrenceRecurrenceRange) *MaintenanceScheduleWeeklyRecurrenceRecurrenceRange { + return &v + }).(MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput) } -// Deprecated: 'custom_process_metadata_condition_key' is deprecated. You should use 'custom_process_metadata' -func (o ManagementZoneRuleConditionOutput) CustomProcessMetadataConditionKeys() ManagementZoneRuleConditionCustomProcessMetadataConditionKeyArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionCustomProcessMetadataConditionKey { - return v.CustomProcessMetadataConditionKeys - }).(ManagementZoneRuleConditionCustomProcessMetadataConditionKeyArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput) EndDate() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleWeeklyRecurrenceRecurrenceRange) string { return v.EndDate }).(pulumi.StringOutput) } -func (o ManagementZoneRuleConditionOutput) CustomProcessMetadatas() ManagementZoneRuleConditionCustomProcessMetadataArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionCustomProcessMetadata { - return v.CustomProcessMetadatas - }).(ManagementZoneRuleConditionCustomProcessMetadataArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput) StartDate() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleWeeklyRecurrenceRecurrenceRange) string { return v.StartDate }).(pulumi.StringOutput) } -func (o ManagementZoneRuleConditionOutput) DatabaseTopologies() ManagementZoneRuleConditionDatabaseTopologyArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionDatabaseTopology { - return v.DatabaseTopologies - }).(ManagementZoneRuleConditionDatabaseTopologyArrayOutput) -} +type MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput struct{ *pulumi.OutputState } -// Deprecated: You should use 'database_topology' instead of 'database_topology_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) DatabaseTopologyComparisons() ManagementZoneRuleConditionDatabaseTopologyComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionDatabaseTopologyComparison { - return v.DatabaseTopologyComparisons - }).(ManagementZoneRuleConditionDatabaseTopologyComparisonArrayOutput) +func (MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleWeeklyRecurrenceRecurrenceRange)(nil)).Elem() } -// Deprecated: You should use 'dcrum_decoder' instead of 'dcrum_decoder_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) DcrumDecoderComparisons() ManagementZoneRuleConditionDcrumDecoderComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionDcrumDecoderComparison { - return v.DcrumDecoderComparisons - }).(ManagementZoneRuleConditionDcrumDecoderComparisonArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput) ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput() MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput { + return o } -func (o ManagementZoneRuleConditionOutput) DcrumDecoders() ManagementZoneRuleConditionDcrumDecoderArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionDcrumDecoder { return v.DcrumDecoders }).(ManagementZoneRuleConditionDcrumDecoderArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput) ToMaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutputWithContext(ctx context.Context) MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput { + return o } -func (o ManagementZoneRuleConditionOutput) Entities() ManagementZoneRuleConditionEntityArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionEntity { return v.Entities }).(ManagementZoneRuleConditionEntityArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput) Elem() MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput { + return o.ApplyT(func(v *MaintenanceScheduleWeeklyRecurrenceRecurrenceRange) MaintenanceScheduleWeeklyRecurrenceRecurrenceRange { + if v != nil { + return *v + } + var ret MaintenanceScheduleWeeklyRecurrenceRecurrenceRange + return ret + }).(MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput) } -// Deprecated: You should use 'entity' instead of 'entity_id_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) EntityIdComparisons() ManagementZoneRuleConditionEntityIdComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionEntityIdComparison { - return v.EntityIdComparisons - }).(ManagementZoneRuleConditionEntityIdComparisonArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput) EndDate() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleWeeklyRecurrenceRecurrenceRange) *string { + if v == nil { + return nil + } + return &v.EndDate + }).(pulumi.StringPtrOutput) } -func (o ManagementZoneRuleConditionOutput) HostTeches() ManagementZoneRuleConditionHostTechArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionHostTech { return v.HostTeches }).(ManagementZoneRuleConditionHostTechArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput) StartDate() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleWeeklyRecurrenceRecurrenceRange) *string { + if v == nil { + return nil + } + return &v.StartDate + }).(pulumi.StringPtrOutput) } -// Deprecated: `hypervisor_type_comparision` is deprecated. Use `hypervisor` instead -func (o ManagementZoneRuleConditionOutput) HypervisorTypeComparisions() ManagementZoneRuleConditionHypervisorTypeComparisionArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionHypervisorTypeComparision { - return v.HypervisorTypeComparisions - }).(ManagementZoneRuleConditionHypervisorTypeComparisionArrayOutput) +type MaintenanceScheduleWeeklyRecurrenceTimeWindow struct { + EndTime string `pulumi:"endTime"` + StartTime string `pulumi:"startTime"` + TimeZone string `pulumi:"timeZone"` } -func (o ManagementZoneRuleConditionOutput) Hypervisors() ManagementZoneRuleConditionHypervisorArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionHypervisor { return v.Hypervisors }).(ManagementZoneRuleConditionHypervisorArrayOutput) -} +// MaintenanceScheduleWeeklyRecurrenceTimeWindowInput is an input type that accepts MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs and MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput values. +// You can construct a concrete instance of `MaintenanceScheduleWeeklyRecurrenceTimeWindowInput` via: +// +// MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs{...} +type MaintenanceScheduleWeeklyRecurrenceTimeWindowInput interface { + pulumi.Input -// Deprecated: You should use 'indexed_name' instead of 'indexed_name_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) IndexedNameComparisons() ManagementZoneRuleConditionIndexedNameComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionIndexedNameComparison { - return v.IndexedNameComparisons - }).(ManagementZoneRuleConditionIndexedNameComparisonArrayOutput) + ToMaintenanceScheduleWeeklyRecurrenceTimeWindowOutput() MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput + ToMaintenanceScheduleWeeklyRecurrenceTimeWindowOutputWithContext(context.Context) MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput } -func (o ManagementZoneRuleConditionOutput) IndexedNames() ManagementZoneRuleConditionIndexedNameArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionIndexedName { return v.IndexedNames }).(ManagementZoneRuleConditionIndexedNameArrayOutput) +type MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs struct { + EndTime pulumi.StringInput `pulumi:"endTime"` + StartTime pulumi.StringInput `pulumi:"startTime"` + TimeZone pulumi.StringInput `pulumi:"timeZone"` } -// Deprecated: You should use 'indexed_string' instead of 'indexed_string_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) IndexedStringComparisons() ManagementZoneRuleConditionIndexedStringComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionIndexedStringComparison { - return v.IndexedStringComparisons - }).(ManagementZoneRuleConditionIndexedStringComparisonArrayOutput) +func (MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleWeeklyRecurrenceTimeWindow)(nil)).Elem() } -func (o ManagementZoneRuleConditionOutput) IndexedStrings() ManagementZoneRuleConditionIndexedStringArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionIndexedString { - return v.IndexedStrings - }).(ManagementZoneRuleConditionIndexedStringArrayOutput) +func (i MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs) ToMaintenanceScheduleWeeklyRecurrenceTimeWindowOutput() MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput { + return i.ToMaintenanceScheduleWeeklyRecurrenceTimeWindowOutputWithContext(context.Background()) } -// Deprecated: You should use 'indexed_tag' instead of 'indexed_tag_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) IndexedTagComparisons() ManagementZoneRuleConditionIndexedTagComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionIndexedTagComparison { - return v.IndexedTagComparisons - }).(ManagementZoneRuleConditionIndexedTagComparisonArrayOutput) +func (i MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs) ToMaintenanceScheduleWeeklyRecurrenceTimeWindowOutputWithContext(ctx context.Context) MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput) } -func (o ManagementZoneRuleConditionOutput) IndexedTags() ManagementZoneRuleConditionIndexedTagArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionIndexedTag { return v.IndexedTags }).(ManagementZoneRuleConditionIndexedTagArrayOutput) +func (i MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs) ToMaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput() MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput { + return i.ToMaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutputWithContext(context.Background()) } -// Deprecated: You should use 'integer' instead of 'integer_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) IntegerComparisons() ManagementZoneRuleConditionIntegerComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionIntegerComparison { - return v.IntegerComparisons - }).(ManagementZoneRuleConditionIntegerComparisonArrayOutput) +func (i MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs) ToMaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutputWithContext(ctx context.Context) MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput).ToMaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutputWithContext(ctx) } -func (o ManagementZoneRuleConditionOutput) Integers() ManagementZoneRuleConditionIntegerArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionInteger { return v.Integers }).(ManagementZoneRuleConditionIntegerArrayOutput) -} +// MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrInput is an input type that accepts MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs, MaintenanceScheduleWeeklyRecurrenceTimeWindowPtr and MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput values. +// You can construct a concrete instance of `MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrInput` via: +// +// MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs{...} +// +// or: +// +// nil +type MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrInput interface { + pulumi.Input -// Deprecated: You should use 'ipaddress' instead of 'ipaddress_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) IpaddressComparisons() ManagementZoneRuleConditionIpaddressComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionIpaddressComparison { - return v.IpaddressComparisons - }).(ManagementZoneRuleConditionIpaddressComparisonArrayOutput) + ToMaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput() MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput + ToMaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutputWithContext(context.Context) MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput } -func (o ManagementZoneRuleConditionOutput) Ipaddresses() ManagementZoneRuleConditionIpaddressArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionIpaddress { return v.Ipaddresses }).(ManagementZoneRuleConditionIpaddressArrayOutput) -} +type maintenanceScheduleWeeklyRecurrenceTimeWindowPtrType MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs -func (o ManagementZoneRuleConditionOutput) Keys() ManagementZoneRuleConditionKeyArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionKey { return v.Keys }).(ManagementZoneRuleConditionKeyArrayOutput) +func MaintenanceScheduleWeeklyRecurrenceTimeWindowPtr(v *MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs) MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrInput { + return (*maintenanceScheduleWeeklyRecurrenceTimeWindowPtrType)(v) } -// Deprecated: You should use 'mobile_platform' instead of 'mobile_platform_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) MobilePlatformComparisons() ManagementZoneRuleConditionMobilePlatformComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionMobilePlatformComparison { - return v.MobilePlatformComparisons - }).(ManagementZoneRuleConditionMobilePlatformComparisonArrayOutput) +func (*maintenanceScheduleWeeklyRecurrenceTimeWindowPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleWeeklyRecurrenceTimeWindow)(nil)).Elem() } -func (o ManagementZoneRuleConditionOutput) MobilePlatforms() ManagementZoneRuleConditionMobilePlatformArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionMobilePlatform { - return v.MobilePlatforms - }).(ManagementZoneRuleConditionMobilePlatformArrayOutput) +func (i *maintenanceScheduleWeeklyRecurrenceTimeWindowPtrType) ToMaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput() MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput { + return i.ToMaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutputWithContext(context.Background()) } -func (o ManagementZoneRuleConditionOutput) OsArches() ManagementZoneRuleConditionOsArchArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionOsArch { return v.OsArches }).(ManagementZoneRuleConditionOsArchArrayOutput) +func (i *maintenanceScheduleWeeklyRecurrenceTimeWindowPtrType) ToMaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutputWithContext(ctx context.Context) MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput) } -func (o ManagementZoneRuleConditionOutput) OsTypes() ManagementZoneRuleConditionOsTypeArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionOsType { return v.OsTypes }).(ManagementZoneRuleConditionOsTypeArrayOutput) -} +type MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput struct{ *pulumi.OutputState } -// Deprecated: You should use 'os_arch' instead of 'osarchitecture_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) OsarchitectureComparisons() ManagementZoneRuleConditionOsarchitectureComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionOsarchitectureComparison { - return v.OsarchitectureComparisons - }).(ManagementZoneRuleConditionOsarchitectureComparisonArrayOutput) +func (MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceScheduleWeeklyRecurrenceTimeWindow)(nil)).Elem() } -// Deprecated: You should use 'os_type' instead of 'ostype_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) OstypeComparisons() ManagementZoneRuleConditionOstypeComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionOstypeComparison { - return v.OstypeComparisons - }).(ManagementZoneRuleConditionOstypeComparisonArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput) ToMaintenanceScheduleWeeklyRecurrenceTimeWindowOutput() MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput { + return o } -// Deprecated: You should use 'paas_type' instead of 'paas_type_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) PaasTypeComparisons() ManagementZoneRuleConditionPaasTypeComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionPaasTypeComparison { - return v.PaasTypeComparisons - }).(ManagementZoneRuleConditionPaasTypeComparisonArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput) ToMaintenanceScheduleWeeklyRecurrenceTimeWindowOutputWithContext(ctx context.Context) MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput { + return o } -func (o ManagementZoneRuleConditionOutput) PaasTypes() ManagementZoneRuleConditionPaasTypeArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionPaasType { return v.PaasTypes }).(ManagementZoneRuleConditionPaasTypeArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput) ToMaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput() MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput { + return o.ToMaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutputWithContext(context.Background()) } -// Deprecated: 'process_metadata_condition_key' is deprecated. You should use 'process_metadata' -func (o ManagementZoneRuleConditionOutput) ProcessMetadataConditionKeys() ManagementZoneRuleConditionProcessMetadataConditionKeyArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionProcessMetadataConditionKey { - return v.ProcessMetadataConditionKeys - }).(ManagementZoneRuleConditionProcessMetadataConditionKeyArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput) ToMaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutputWithContext(ctx context.Context) MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceScheduleWeeklyRecurrenceTimeWindow) *MaintenanceScheduleWeeklyRecurrenceTimeWindow { + return &v + }).(MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput) } -func (o ManagementZoneRuleConditionOutput) ProcessMetadatas() ManagementZoneRuleConditionProcessMetadataArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionProcessMetadata { - return v.ProcessMetadatas - }).(ManagementZoneRuleConditionProcessMetadataArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput) EndTime() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleWeeklyRecurrenceTimeWindow) string { return v.EndTime }).(pulumi.StringOutput) } -func (o ManagementZoneRuleConditionOutput) ServiceTopologies() ManagementZoneRuleConditionServiceTopologyArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionServiceTopology { - return v.ServiceTopologies - }).(ManagementZoneRuleConditionServiceTopologyArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput) StartTime() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleWeeklyRecurrenceTimeWindow) string { return v.StartTime }).(pulumi.StringOutput) } -// Deprecated: You should use 'service_topology' instead of 'service_topology_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) ServiceTopologyComparisons() ManagementZoneRuleConditionServiceTopologyComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionServiceTopologyComparison { - return v.ServiceTopologyComparisons - }).(ManagementZoneRuleConditionServiceTopologyComparisonArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput) TimeZone() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceScheduleWeeklyRecurrenceTimeWindow) string { return v.TimeZone }).(pulumi.StringOutput) } -// Deprecated: You should use 'service_type' instead of 'service_type_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) ServiceTypeComparisons() ManagementZoneRuleConditionServiceTypeComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionServiceTypeComparison { - return v.ServiceTypeComparisons - }).(ManagementZoneRuleConditionServiceTypeComparisonArrayOutput) -} +type MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput struct{ *pulumi.OutputState } -func (o ManagementZoneRuleConditionOutput) ServiceTypes() ManagementZoneRuleConditionServiceTypeArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionServiceType { return v.ServiceTypes }).(ManagementZoneRuleConditionServiceTypeArrayOutput) +func (MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceScheduleWeeklyRecurrenceTimeWindow)(nil)).Elem() } -// Deprecated: You should use 'host_tech' instead of 'simple_host_tech_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) SimpleHostTechComparisons() ManagementZoneRuleConditionSimpleHostTechComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionSimpleHostTechComparison { - return v.SimpleHostTechComparisons - }).(ManagementZoneRuleConditionSimpleHostTechComparisonArrayOutput) -} - -// Deprecated: You should use 'tech' instead of 'simple_tech_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) SimpleTechComparisons() ManagementZoneRuleConditionSimpleTechComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionSimpleTechComparison { - return v.SimpleTechComparisons - }).(ManagementZoneRuleConditionSimpleTechComparisonArrayOutput) -} - -// Deprecated: You should use 'string' instead of 'string_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) StringComparisons() ManagementZoneRuleConditionStringComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionStringComparison { - return v.StringComparisons - }).(ManagementZoneRuleConditionStringComparisonArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput) ToMaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput() MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput { + return o } -// Deprecated: 'string_condition_key' is deprecated. You should use 'string_key' -func (o ManagementZoneRuleConditionOutput) StringConditionKeys() ManagementZoneRuleConditionStringConditionKeyArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionStringConditionKey { - return v.StringConditionKeys - }).(ManagementZoneRuleConditionStringConditionKeyArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput) ToMaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutputWithContext(ctx context.Context) MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput { + return o } -func (o ManagementZoneRuleConditionOutput) StringKeys() ManagementZoneRuleConditionStringKeyArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionStringKey { return v.StringKeys }).(ManagementZoneRuleConditionStringKeyArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput) Elem() MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput { + return o.ApplyT(func(v *MaintenanceScheduleWeeklyRecurrenceTimeWindow) MaintenanceScheduleWeeklyRecurrenceTimeWindow { + if v != nil { + return *v + } + var ret MaintenanceScheduleWeeklyRecurrenceTimeWindow + return ret + }).(MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput) } -func (o ManagementZoneRuleConditionOutput) Strings() ManagementZoneRuleConditionStringArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionString { return v.Strings }).(ManagementZoneRuleConditionStringArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput) EndTime() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleWeeklyRecurrenceTimeWindow) *string { + if v == nil { + return nil + } + return &v.EndTime + }).(pulumi.StringPtrOutput) } -// Deprecated: You should use 'synthetic_engine' instead of 'synthetic_engine_type_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) SyntheticEngineTypeComparisons() ManagementZoneRuleConditionSyntheticEngineTypeComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionSyntheticEngineTypeComparison { - return v.SyntheticEngineTypeComparisons - }).(ManagementZoneRuleConditionSyntheticEngineTypeComparisonArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput) StartTime() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleWeeklyRecurrenceTimeWindow) *string { + if v == nil { + return nil + } + return &v.StartTime + }).(pulumi.StringPtrOutput) } -func (o ManagementZoneRuleConditionOutput) SyntheticEngines() ManagementZoneRuleConditionSyntheticEngineArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionSyntheticEngine { - return v.SyntheticEngines - }).(ManagementZoneRuleConditionSyntheticEngineArrayOutput) +func (o MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput) TimeZone() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceScheduleWeeklyRecurrenceTimeWindow) *string { + if v == nil { + return nil + } + return &v.TimeZone + }).(pulumi.StringPtrOutput) } -// Deprecated: You should use 'tag' instead of 'tag_comparison'. This attribute still exists for backwards compatibility. -func (o ManagementZoneRuleConditionOutput) TagComparisons() ManagementZoneRuleConditionTagComparisonArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionTagComparison { - return v.TagComparisons - }).(ManagementZoneRuleConditionTagComparisonArrayOutput) +type MaintenanceWindowMetadata struct { + // Dynatrace server version + ClusterVersion *string `pulumi:"clusterVersion"` + // A Sorted list of the version numbers of the configuration + ConfigurationVersions []int `pulumi:"configurationVersions"` + // A Sorted list of the version numbers of the configuration + CurrentConfigurationVersions []string `pulumi:"currentConfigurationVersions"` } -func (o ManagementZoneRuleConditionOutput) Tags() ManagementZoneRuleConditionTagArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionTag { return v.Tags }).(ManagementZoneRuleConditionTagArrayOutput) -} +// MaintenanceWindowMetadataInput is an input type that accepts MaintenanceWindowMetadataArgs and MaintenanceWindowMetadataOutput values. +// You can construct a concrete instance of `MaintenanceWindowMetadataInput` via: +// +// MaintenanceWindowMetadataArgs{...} +type MaintenanceWindowMetadataInput interface { + pulumi.Input -func (o ManagementZoneRuleConditionOutput) Teches() ManagementZoneRuleConditionTechArrayOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionTech { return v.Teches }).(ManagementZoneRuleConditionTechArrayOutput) + ToMaintenanceWindowMetadataOutput() MaintenanceWindowMetadataOutput + ToMaintenanceWindowMetadataOutputWithContext(context.Context) MaintenanceWindowMetadataOutput } -func (o ManagementZoneRuleConditionOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleCondition) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +type MaintenanceWindowMetadataArgs struct { + // Dynatrace server version + ClusterVersion pulumi.StringPtrInput `pulumi:"clusterVersion"` + // A Sorted list of the version numbers of the configuration + ConfigurationVersions pulumi.IntArrayInput `pulumi:"configurationVersions"` + // A Sorted list of the version numbers of the configuration + CurrentConfigurationVersions pulumi.StringArrayInput `pulumi:"currentConfigurationVersions"` } -type ManagementZoneRuleConditionArrayOutput struct{ *pulumi.OutputState } - -func (ManagementZoneRuleConditionArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleCondition)(nil)).Elem() +func (MaintenanceWindowMetadataArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceWindowMetadata)(nil)).Elem() } -func (o ManagementZoneRuleConditionArrayOutput) ToManagementZoneRuleConditionArrayOutput() ManagementZoneRuleConditionArrayOutput { - return o +func (i MaintenanceWindowMetadataArgs) ToMaintenanceWindowMetadataOutput() MaintenanceWindowMetadataOutput { + return i.ToMaintenanceWindowMetadataOutputWithContext(context.Background()) } -func (o ManagementZoneRuleConditionArrayOutput) ToManagementZoneRuleConditionArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionArrayOutput { - return o +func (i MaintenanceWindowMetadataArgs) ToMaintenanceWindowMetadataOutputWithContext(ctx context.Context) MaintenanceWindowMetadataOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowMetadataOutput) } -func (o ManagementZoneRuleConditionArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleCondition { - return vs[0].([]ManagementZoneRuleCondition)[vs[1].(int)] - }).(ManagementZoneRuleConditionOutput) +func (i MaintenanceWindowMetadataArgs) ToMaintenanceWindowMetadataPtrOutput() MaintenanceWindowMetadataPtrOutput { + return i.ToMaintenanceWindowMetadataPtrOutputWithContext(context.Background()) } -type ManagementZoneRuleConditionApplicationType struct { - Negate *bool `pulumi:"negate"` - Operator string `pulumi:"operator"` - Unknowns *string `pulumi:"unknowns"` - Value *string `pulumi:"value"` +func (i MaintenanceWindowMetadataArgs) ToMaintenanceWindowMetadataPtrOutputWithContext(ctx context.Context) MaintenanceWindowMetadataPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowMetadataOutput).ToMaintenanceWindowMetadataPtrOutputWithContext(ctx) } -// ManagementZoneRuleConditionApplicationTypeInput is an input type that accepts ManagementZoneRuleConditionApplicationTypeArgs and ManagementZoneRuleConditionApplicationTypeOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionApplicationTypeInput` via: +// MaintenanceWindowMetadataPtrInput is an input type that accepts MaintenanceWindowMetadataArgs, MaintenanceWindowMetadataPtr and MaintenanceWindowMetadataPtrOutput values. +// You can construct a concrete instance of `MaintenanceWindowMetadataPtrInput` via: +// +// MaintenanceWindowMetadataArgs{...} +// +// or: // -// ManagementZoneRuleConditionApplicationTypeArgs{...} -type ManagementZoneRuleConditionApplicationTypeInput interface { +// nil +type MaintenanceWindowMetadataPtrInput interface { pulumi.Input - ToManagementZoneRuleConditionApplicationTypeOutput() ManagementZoneRuleConditionApplicationTypeOutput - ToManagementZoneRuleConditionApplicationTypeOutputWithContext(context.Context) ManagementZoneRuleConditionApplicationTypeOutput -} - -type ManagementZoneRuleConditionApplicationTypeArgs struct { - Negate pulumi.BoolPtrInput `pulumi:"negate"` - Operator pulumi.StringInput `pulumi:"operator"` - Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` - Value pulumi.StringPtrInput `pulumi:"value"` + ToMaintenanceWindowMetadataPtrOutput() MaintenanceWindowMetadataPtrOutput + ToMaintenanceWindowMetadataPtrOutputWithContext(context.Context) MaintenanceWindowMetadataPtrOutput } -func (ManagementZoneRuleConditionApplicationTypeArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionApplicationType)(nil)).Elem() -} +type maintenanceWindowMetadataPtrType MaintenanceWindowMetadataArgs -func (i ManagementZoneRuleConditionApplicationTypeArgs) ToManagementZoneRuleConditionApplicationTypeOutput() ManagementZoneRuleConditionApplicationTypeOutput { - return i.ToManagementZoneRuleConditionApplicationTypeOutputWithContext(context.Background()) +func MaintenanceWindowMetadataPtr(v *MaintenanceWindowMetadataArgs) MaintenanceWindowMetadataPtrInput { + return (*maintenanceWindowMetadataPtrType)(v) } -func (i ManagementZoneRuleConditionApplicationTypeArgs) ToManagementZoneRuleConditionApplicationTypeOutputWithContext(ctx context.Context) ManagementZoneRuleConditionApplicationTypeOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionApplicationTypeOutput) +func (*maintenanceWindowMetadataPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceWindowMetadata)(nil)).Elem() } -// ManagementZoneRuleConditionApplicationTypeArrayInput is an input type that accepts ManagementZoneRuleConditionApplicationTypeArray and ManagementZoneRuleConditionApplicationTypeArrayOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionApplicationTypeArrayInput` via: -// -// ManagementZoneRuleConditionApplicationTypeArray{ ManagementZoneRuleConditionApplicationTypeArgs{...} } -type ManagementZoneRuleConditionApplicationTypeArrayInput interface { - pulumi.Input - - ToManagementZoneRuleConditionApplicationTypeArrayOutput() ManagementZoneRuleConditionApplicationTypeArrayOutput - ToManagementZoneRuleConditionApplicationTypeArrayOutputWithContext(context.Context) ManagementZoneRuleConditionApplicationTypeArrayOutput +func (i *maintenanceWindowMetadataPtrType) ToMaintenanceWindowMetadataPtrOutput() MaintenanceWindowMetadataPtrOutput { + return i.ToMaintenanceWindowMetadataPtrOutputWithContext(context.Background()) } -type ManagementZoneRuleConditionApplicationTypeArray []ManagementZoneRuleConditionApplicationTypeInput - -func (ManagementZoneRuleConditionApplicationTypeArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionApplicationType)(nil)).Elem() +func (i *maintenanceWindowMetadataPtrType) ToMaintenanceWindowMetadataPtrOutputWithContext(ctx context.Context) MaintenanceWindowMetadataPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowMetadataPtrOutput) } -func (i ManagementZoneRuleConditionApplicationTypeArray) ToManagementZoneRuleConditionApplicationTypeArrayOutput() ManagementZoneRuleConditionApplicationTypeArrayOutput { - return i.ToManagementZoneRuleConditionApplicationTypeArrayOutputWithContext(context.Background()) -} +type MaintenanceWindowMetadataOutput struct{ *pulumi.OutputState } -func (i ManagementZoneRuleConditionApplicationTypeArray) ToManagementZoneRuleConditionApplicationTypeArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionApplicationTypeArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionApplicationTypeArrayOutput) +func (MaintenanceWindowMetadataOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceWindowMetadata)(nil)).Elem() } -type ManagementZoneRuleConditionApplicationTypeOutput struct{ *pulumi.OutputState } - -func (ManagementZoneRuleConditionApplicationTypeOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionApplicationType)(nil)).Elem() +func (o MaintenanceWindowMetadataOutput) ToMaintenanceWindowMetadataOutput() MaintenanceWindowMetadataOutput { + return o } -func (o ManagementZoneRuleConditionApplicationTypeOutput) ToManagementZoneRuleConditionApplicationTypeOutput() ManagementZoneRuleConditionApplicationTypeOutput { +func (o MaintenanceWindowMetadataOutput) ToMaintenanceWindowMetadataOutputWithContext(ctx context.Context) MaintenanceWindowMetadataOutput { return o } -func (o ManagementZoneRuleConditionApplicationTypeOutput) ToManagementZoneRuleConditionApplicationTypeOutputWithContext(ctx context.Context) ManagementZoneRuleConditionApplicationTypeOutput { - return o +func (o MaintenanceWindowMetadataOutput) ToMaintenanceWindowMetadataPtrOutput() MaintenanceWindowMetadataPtrOutput { + return o.ToMaintenanceWindowMetadataPtrOutputWithContext(context.Background()) } -func (o ManagementZoneRuleConditionApplicationTypeOutput) Negate() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionApplicationType) *bool { return v.Negate }).(pulumi.BoolPtrOutput) +func (o MaintenanceWindowMetadataOutput) ToMaintenanceWindowMetadataPtrOutputWithContext(ctx context.Context) MaintenanceWindowMetadataPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceWindowMetadata) *MaintenanceWindowMetadata { + return &v + }).(MaintenanceWindowMetadataPtrOutput) } -func (o ManagementZoneRuleConditionApplicationTypeOutput) Operator() pulumi.StringOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionApplicationType) string { return v.Operator }).(pulumi.StringOutput) +// Dynatrace server version +func (o MaintenanceWindowMetadataOutput) ClusterVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v MaintenanceWindowMetadata) *string { return v.ClusterVersion }).(pulumi.StringPtrOutput) } -func (o ManagementZoneRuleConditionApplicationTypeOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionApplicationType) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +// A Sorted list of the version numbers of the configuration +func (o MaintenanceWindowMetadataOutput) ConfigurationVersions() pulumi.IntArrayOutput { + return o.ApplyT(func(v MaintenanceWindowMetadata) []int { return v.ConfigurationVersions }).(pulumi.IntArrayOutput) } -func (o ManagementZoneRuleConditionApplicationTypeOutput) Value() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionApplicationType) *string { return v.Value }).(pulumi.StringPtrOutput) +// A Sorted list of the version numbers of the configuration +func (o MaintenanceWindowMetadataOutput) CurrentConfigurationVersions() pulumi.StringArrayOutput { + return o.ApplyT(func(v MaintenanceWindowMetadata) []string { return v.CurrentConfigurationVersions }).(pulumi.StringArrayOutput) } -type ManagementZoneRuleConditionApplicationTypeArrayOutput struct{ *pulumi.OutputState } +type MaintenanceWindowMetadataPtrOutput struct{ *pulumi.OutputState } -func (ManagementZoneRuleConditionApplicationTypeArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionApplicationType)(nil)).Elem() +func (MaintenanceWindowMetadataPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceWindowMetadata)(nil)).Elem() } -func (o ManagementZoneRuleConditionApplicationTypeArrayOutput) ToManagementZoneRuleConditionApplicationTypeArrayOutput() ManagementZoneRuleConditionApplicationTypeArrayOutput { +func (o MaintenanceWindowMetadataPtrOutput) ToMaintenanceWindowMetadataPtrOutput() MaintenanceWindowMetadataPtrOutput { return o } -func (o ManagementZoneRuleConditionApplicationTypeArrayOutput) ToManagementZoneRuleConditionApplicationTypeArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionApplicationTypeArrayOutput { +func (o MaintenanceWindowMetadataPtrOutput) ToMaintenanceWindowMetadataPtrOutputWithContext(ctx context.Context) MaintenanceWindowMetadataPtrOutput { return o } -func (o ManagementZoneRuleConditionApplicationTypeArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionApplicationTypeOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionApplicationType { - return vs[0].([]ManagementZoneRuleConditionApplicationType)[vs[1].(int)] - }).(ManagementZoneRuleConditionApplicationTypeOutput) -} - -type ManagementZoneRuleConditionApplicationTypeComparison struct { - Negate *bool `pulumi:"negate"` - Operator string `pulumi:"operator"` - // Deprecated: The value of the attribute type is implicit, therefore shouldn't get specified - Type *string `pulumi:"type"` - Unknowns *string `pulumi:"unknowns"` - Value *string `pulumi:"value"` -} - -// ManagementZoneRuleConditionApplicationTypeComparisonInput is an input type that accepts ManagementZoneRuleConditionApplicationTypeComparisonArgs and ManagementZoneRuleConditionApplicationTypeComparisonOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionApplicationTypeComparisonInput` via: -// -// ManagementZoneRuleConditionApplicationTypeComparisonArgs{...} -type ManagementZoneRuleConditionApplicationTypeComparisonInput interface { - pulumi.Input - - ToManagementZoneRuleConditionApplicationTypeComparisonOutput() ManagementZoneRuleConditionApplicationTypeComparisonOutput - ToManagementZoneRuleConditionApplicationTypeComparisonOutputWithContext(context.Context) ManagementZoneRuleConditionApplicationTypeComparisonOutput +func (o MaintenanceWindowMetadataPtrOutput) Elem() MaintenanceWindowMetadataOutput { + return o.ApplyT(func(v *MaintenanceWindowMetadata) MaintenanceWindowMetadata { + if v != nil { + return *v + } + var ret MaintenanceWindowMetadata + return ret + }).(MaintenanceWindowMetadataOutput) } -type ManagementZoneRuleConditionApplicationTypeComparisonArgs struct { - Negate pulumi.BoolPtrInput `pulumi:"negate"` - Operator pulumi.StringInput `pulumi:"operator"` - // Deprecated: The value of the attribute type is implicit, therefore shouldn't get specified - Type pulumi.StringPtrInput `pulumi:"type"` - Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` - Value pulumi.StringPtrInput `pulumi:"value"` +// Dynatrace server version +func (o MaintenanceWindowMetadataPtrOutput) ClusterVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceWindowMetadata) *string { + if v == nil { + return nil + } + return v.ClusterVersion + }).(pulumi.StringPtrOutput) } -func (ManagementZoneRuleConditionApplicationTypeComparisonArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionApplicationTypeComparison)(nil)).Elem() +// A Sorted list of the version numbers of the configuration +func (o MaintenanceWindowMetadataPtrOutput) ConfigurationVersions() pulumi.IntArrayOutput { + return o.ApplyT(func(v *MaintenanceWindowMetadata) []int { + if v == nil { + return nil + } + return v.ConfigurationVersions + }).(pulumi.IntArrayOutput) } -func (i ManagementZoneRuleConditionApplicationTypeComparisonArgs) ToManagementZoneRuleConditionApplicationTypeComparisonOutput() ManagementZoneRuleConditionApplicationTypeComparisonOutput { - return i.ToManagementZoneRuleConditionApplicationTypeComparisonOutputWithContext(context.Background()) +// A Sorted list of the version numbers of the configuration +func (o MaintenanceWindowMetadataPtrOutput) CurrentConfigurationVersions() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MaintenanceWindowMetadata) []string { + if v == nil { + return nil + } + return v.CurrentConfigurationVersions + }).(pulumi.StringArrayOutput) } -func (i ManagementZoneRuleConditionApplicationTypeComparisonArgs) ToManagementZoneRuleConditionApplicationTypeComparisonOutputWithContext(ctx context.Context) ManagementZoneRuleConditionApplicationTypeComparisonOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionApplicationTypeComparisonOutput) +type MaintenanceWindowSchedule struct { + // The end date and time of the maintenance window validity period in yyyy-mm-dd HH:mm format + End string `pulumi:"end"` + // The recurrence of the maintenance window + Recurrence *MaintenanceWindowScheduleRecurrence `pulumi:"recurrence"` + // The type of the schedule recurrence. Possible values are `DAILY`, `MONTHLY`, `ONCE` and `WEEKLY` + RecurrenceType string `pulumi:"recurrenceType"` + // The start date and time of the maintenance window validity period in yyyy-mm-dd HH:mm format + Start string `pulumi:"start"` + // allows for configuring properties that are not explicitly supported by the current version of this provider + Unknowns *string `pulumi:"unknowns"` + // The time zone of the start and end time. Default time zone is UTC. You can use either UTC offset `UTC+01:00` format or the IANA Time Zone Database format (for example, `Europe/Vienna`) + ZoneId string `pulumi:"zoneId"` } -// ManagementZoneRuleConditionApplicationTypeComparisonArrayInput is an input type that accepts ManagementZoneRuleConditionApplicationTypeComparisonArray and ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionApplicationTypeComparisonArrayInput` via: +// MaintenanceWindowScheduleInput is an input type that accepts MaintenanceWindowScheduleArgs and MaintenanceWindowScheduleOutput values. +// You can construct a concrete instance of `MaintenanceWindowScheduleInput` via: // -// ManagementZoneRuleConditionApplicationTypeComparisonArray{ ManagementZoneRuleConditionApplicationTypeComparisonArgs{...} } -type ManagementZoneRuleConditionApplicationTypeComparisonArrayInput interface { +// MaintenanceWindowScheduleArgs{...} +type MaintenanceWindowScheduleInput interface { pulumi.Input - ToManagementZoneRuleConditionApplicationTypeComparisonArrayOutput() ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput - ToManagementZoneRuleConditionApplicationTypeComparisonArrayOutputWithContext(context.Context) ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput + ToMaintenanceWindowScheduleOutput() MaintenanceWindowScheduleOutput + ToMaintenanceWindowScheduleOutputWithContext(context.Context) MaintenanceWindowScheduleOutput } -type ManagementZoneRuleConditionApplicationTypeComparisonArray []ManagementZoneRuleConditionApplicationTypeComparisonInput - -func (ManagementZoneRuleConditionApplicationTypeComparisonArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionApplicationTypeComparison)(nil)).Elem() +type MaintenanceWindowScheduleArgs struct { + // The end date and time of the maintenance window validity period in yyyy-mm-dd HH:mm format + End pulumi.StringInput `pulumi:"end"` + // The recurrence of the maintenance window + Recurrence MaintenanceWindowScheduleRecurrencePtrInput `pulumi:"recurrence"` + // The type of the schedule recurrence. Possible values are `DAILY`, `MONTHLY`, `ONCE` and `WEEKLY` + RecurrenceType pulumi.StringInput `pulumi:"recurrenceType"` + // The start date and time of the maintenance window validity period in yyyy-mm-dd HH:mm format + Start pulumi.StringInput `pulumi:"start"` + // allows for configuring properties that are not explicitly supported by the current version of this provider + Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` + // The time zone of the start and end time. Default time zone is UTC. You can use either UTC offset `UTC+01:00` format or the IANA Time Zone Database format (for example, `Europe/Vienna`) + ZoneId pulumi.StringInput `pulumi:"zoneId"` } -func (i ManagementZoneRuleConditionApplicationTypeComparisonArray) ToManagementZoneRuleConditionApplicationTypeComparisonArrayOutput() ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput { - return i.ToManagementZoneRuleConditionApplicationTypeComparisonArrayOutputWithContext(context.Background()) +func (MaintenanceWindowScheduleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceWindowSchedule)(nil)).Elem() } -func (i ManagementZoneRuleConditionApplicationTypeComparisonArray) ToManagementZoneRuleConditionApplicationTypeComparisonArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput) +func (i MaintenanceWindowScheduleArgs) ToMaintenanceWindowScheduleOutput() MaintenanceWindowScheduleOutput { + return i.ToMaintenanceWindowScheduleOutputWithContext(context.Background()) } -type ManagementZoneRuleConditionApplicationTypeComparisonOutput struct{ *pulumi.OutputState } - -func (ManagementZoneRuleConditionApplicationTypeComparisonOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionApplicationTypeComparison)(nil)).Elem() +func (i MaintenanceWindowScheduleArgs) ToMaintenanceWindowScheduleOutputWithContext(ctx context.Context) MaintenanceWindowScheduleOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScheduleOutput) } -func (o ManagementZoneRuleConditionApplicationTypeComparisonOutput) ToManagementZoneRuleConditionApplicationTypeComparisonOutput() ManagementZoneRuleConditionApplicationTypeComparisonOutput { - return o +func (i MaintenanceWindowScheduleArgs) ToMaintenanceWindowSchedulePtrOutput() MaintenanceWindowSchedulePtrOutput { + return i.ToMaintenanceWindowSchedulePtrOutputWithContext(context.Background()) } -func (o ManagementZoneRuleConditionApplicationTypeComparisonOutput) ToManagementZoneRuleConditionApplicationTypeComparisonOutputWithContext(ctx context.Context) ManagementZoneRuleConditionApplicationTypeComparisonOutput { - return o +func (i MaintenanceWindowScheduleArgs) ToMaintenanceWindowSchedulePtrOutputWithContext(ctx context.Context) MaintenanceWindowSchedulePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScheduleOutput).ToMaintenanceWindowSchedulePtrOutputWithContext(ctx) } -func (o ManagementZoneRuleConditionApplicationTypeComparisonOutput) Negate() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionApplicationTypeComparison) *bool { return v.Negate }).(pulumi.BoolPtrOutput) -} +// MaintenanceWindowSchedulePtrInput is an input type that accepts MaintenanceWindowScheduleArgs, MaintenanceWindowSchedulePtr and MaintenanceWindowSchedulePtrOutput values. +// You can construct a concrete instance of `MaintenanceWindowSchedulePtrInput` via: +// +// MaintenanceWindowScheduleArgs{...} +// +// or: +// +// nil +type MaintenanceWindowSchedulePtrInput interface { + pulumi.Input -func (o ManagementZoneRuleConditionApplicationTypeComparisonOutput) Operator() pulumi.StringOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionApplicationTypeComparison) string { return v.Operator }).(pulumi.StringOutput) + ToMaintenanceWindowSchedulePtrOutput() MaintenanceWindowSchedulePtrOutput + ToMaintenanceWindowSchedulePtrOutputWithContext(context.Context) MaintenanceWindowSchedulePtrOutput } -// Deprecated: The value of the attribute type is implicit, therefore shouldn't get specified -func (o ManagementZoneRuleConditionApplicationTypeComparisonOutput) Type() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionApplicationTypeComparison) *string { return v.Type }).(pulumi.StringPtrOutput) -} +type maintenanceWindowSchedulePtrType MaintenanceWindowScheduleArgs -func (o ManagementZoneRuleConditionApplicationTypeComparisonOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionApplicationTypeComparison) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +func MaintenanceWindowSchedulePtr(v *MaintenanceWindowScheduleArgs) MaintenanceWindowSchedulePtrInput { + return (*maintenanceWindowSchedulePtrType)(v) } -func (o ManagementZoneRuleConditionApplicationTypeComparisonOutput) Value() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionApplicationTypeComparison) *string { return v.Value }).(pulumi.StringPtrOutput) +func (*maintenanceWindowSchedulePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceWindowSchedule)(nil)).Elem() } -type ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput struct{ *pulumi.OutputState } - -func (ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionApplicationTypeComparison)(nil)).Elem() +func (i *maintenanceWindowSchedulePtrType) ToMaintenanceWindowSchedulePtrOutput() MaintenanceWindowSchedulePtrOutput { + return i.ToMaintenanceWindowSchedulePtrOutputWithContext(context.Background()) } -func (o ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput) ToManagementZoneRuleConditionApplicationTypeComparisonArrayOutput() ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput { - return o +func (i *maintenanceWindowSchedulePtrType) ToMaintenanceWindowSchedulePtrOutputWithContext(ctx context.Context) MaintenanceWindowSchedulePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowSchedulePtrOutput) } -func (o ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput) ToManagementZoneRuleConditionApplicationTypeComparisonArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput { - return o -} +type MaintenanceWindowScheduleOutput struct{ *pulumi.OutputState } -func (o ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionApplicationTypeComparisonOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionApplicationTypeComparison { - return vs[0].([]ManagementZoneRuleConditionApplicationTypeComparison)[vs[1].(int)] - }).(ManagementZoneRuleConditionApplicationTypeComparisonOutput) +func (MaintenanceWindowScheduleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceWindowSchedule)(nil)).Elem() } -type ManagementZoneRuleConditionAzureComputeMode struct { - Negate *bool `pulumi:"negate"` - Operator string `pulumi:"operator"` - Unknowns *string `pulumi:"unknowns"` - Value *string `pulumi:"value"` +func (o MaintenanceWindowScheduleOutput) ToMaintenanceWindowScheduleOutput() MaintenanceWindowScheduleOutput { + return o } -// ManagementZoneRuleConditionAzureComputeModeInput is an input type that accepts ManagementZoneRuleConditionAzureComputeModeArgs and ManagementZoneRuleConditionAzureComputeModeOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionAzureComputeModeInput` via: -// -// ManagementZoneRuleConditionAzureComputeModeArgs{...} -type ManagementZoneRuleConditionAzureComputeModeInput interface { - pulumi.Input - - ToManagementZoneRuleConditionAzureComputeModeOutput() ManagementZoneRuleConditionAzureComputeModeOutput - ToManagementZoneRuleConditionAzureComputeModeOutputWithContext(context.Context) ManagementZoneRuleConditionAzureComputeModeOutput +func (o MaintenanceWindowScheduleOutput) ToMaintenanceWindowScheduleOutputWithContext(ctx context.Context) MaintenanceWindowScheduleOutput { + return o } -type ManagementZoneRuleConditionAzureComputeModeArgs struct { - Negate pulumi.BoolPtrInput `pulumi:"negate"` - Operator pulumi.StringInput `pulumi:"operator"` - Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` - Value pulumi.StringPtrInput `pulumi:"value"` +func (o MaintenanceWindowScheduleOutput) ToMaintenanceWindowSchedulePtrOutput() MaintenanceWindowSchedulePtrOutput { + return o.ToMaintenanceWindowSchedulePtrOutputWithContext(context.Background()) } -func (ManagementZoneRuleConditionAzureComputeModeArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionAzureComputeMode)(nil)).Elem() +func (o MaintenanceWindowScheduleOutput) ToMaintenanceWindowSchedulePtrOutputWithContext(ctx context.Context) MaintenanceWindowSchedulePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceWindowSchedule) *MaintenanceWindowSchedule { + return &v + }).(MaintenanceWindowSchedulePtrOutput) } -func (i ManagementZoneRuleConditionAzureComputeModeArgs) ToManagementZoneRuleConditionAzureComputeModeOutput() ManagementZoneRuleConditionAzureComputeModeOutput { - return i.ToManagementZoneRuleConditionAzureComputeModeOutputWithContext(context.Background()) +// The end date and time of the maintenance window validity period in yyyy-mm-dd HH:mm format +func (o MaintenanceWindowScheduleOutput) End() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceWindowSchedule) string { return v.End }).(pulumi.StringOutput) } -func (i ManagementZoneRuleConditionAzureComputeModeArgs) ToManagementZoneRuleConditionAzureComputeModeOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureComputeModeOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionAzureComputeModeOutput) +// The recurrence of the maintenance window +func (o MaintenanceWindowScheduleOutput) Recurrence() MaintenanceWindowScheduleRecurrencePtrOutput { + return o.ApplyT(func(v MaintenanceWindowSchedule) *MaintenanceWindowScheduleRecurrence { return v.Recurrence }).(MaintenanceWindowScheduleRecurrencePtrOutput) } -// ManagementZoneRuleConditionAzureComputeModeArrayInput is an input type that accepts ManagementZoneRuleConditionAzureComputeModeArray and ManagementZoneRuleConditionAzureComputeModeArrayOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionAzureComputeModeArrayInput` via: -// -// ManagementZoneRuleConditionAzureComputeModeArray{ ManagementZoneRuleConditionAzureComputeModeArgs{...} } -type ManagementZoneRuleConditionAzureComputeModeArrayInput interface { - pulumi.Input - - ToManagementZoneRuleConditionAzureComputeModeArrayOutput() ManagementZoneRuleConditionAzureComputeModeArrayOutput - ToManagementZoneRuleConditionAzureComputeModeArrayOutputWithContext(context.Context) ManagementZoneRuleConditionAzureComputeModeArrayOutput +// The type of the schedule recurrence. Possible values are `DAILY`, `MONTHLY`, `ONCE` and `WEEKLY` +func (o MaintenanceWindowScheduleOutput) RecurrenceType() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceWindowSchedule) string { return v.RecurrenceType }).(pulumi.StringOutput) } -type ManagementZoneRuleConditionAzureComputeModeArray []ManagementZoneRuleConditionAzureComputeModeInput - -func (ManagementZoneRuleConditionAzureComputeModeArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionAzureComputeMode)(nil)).Elem() +// The start date and time of the maintenance window validity period in yyyy-mm-dd HH:mm format +func (o MaintenanceWindowScheduleOutput) Start() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceWindowSchedule) string { return v.Start }).(pulumi.StringOutput) } -func (i ManagementZoneRuleConditionAzureComputeModeArray) ToManagementZoneRuleConditionAzureComputeModeArrayOutput() ManagementZoneRuleConditionAzureComputeModeArrayOutput { - return i.ToManagementZoneRuleConditionAzureComputeModeArrayOutputWithContext(context.Background()) +// allows for configuring properties that are not explicitly supported by the current version of this provider +func (o MaintenanceWindowScheduleOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v MaintenanceWindowSchedule) *string { return v.Unknowns }).(pulumi.StringPtrOutput) } -func (i ManagementZoneRuleConditionAzureComputeModeArray) ToManagementZoneRuleConditionAzureComputeModeArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureComputeModeArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionAzureComputeModeArrayOutput) +// The time zone of the start and end time. Default time zone is UTC. You can use either UTC offset `UTC+01:00` format or the IANA Time Zone Database format (for example, `Europe/Vienna`) +func (o MaintenanceWindowScheduleOutput) ZoneId() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceWindowSchedule) string { return v.ZoneId }).(pulumi.StringOutput) } -type ManagementZoneRuleConditionAzureComputeModeOutput struct{ *pulumi.OutputState } +type MaintenanceWindowSchedulePtrOutput struct{ *pulumi.OutputState } -func (ManagementZoneRuleConditionAzureComputeModeOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionAzureComputeMode)(nil)).Elem() +func (MaintenanceWindowSchedulePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceWindowSchedule)(nil)).Elem() } -func (o ManagementZoneRuleConditionAzureComputeModeOutput) ToManagementZoneRuleConditionAzureComputeModeOutput() ManagementZoneRuleConditionAzureComputeModeOutput { +func (o MaintenanceWindowSchedulePtrOutput) ToMaintenanceWindowSchedulePtrOutput() MaintenanceWindowSchedulePtrOutput { return o } -func (o ManagementZoneRuleConditionAzureComputeModeOutput) ToManagementZoneRuleConditionAzureComputeModeOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureComputeModeOutput { +func (o MaintenanceWindowSchedulePtrOutput) ToMaintenanceWindowSchedulePtrOutputWithContext(ctx context.Context) MaintenanceWindowSchedulePtrOutput { return o } -func (o ManagementZoneRuleConditionAzureComputeModeOutput) Negate() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionAzureComputeMode) *bool { return v.Negate }).(pulumi.BoolPtrOutput) -} - -func (o ManagementZoneRuleConditionAzureComputeModeOutput) Operator() pulumi.StringOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionAzureComputeMode) string { return v.Operator }).(pulumi.StringOutput) +func (o MaintenanceWindowSchedulePtrOutput) Elem() MaintenanceWindowScheduleOutput { + return o.ApplyT(func(v *MaintenanceWindowSchedule) MaintenanceWindowSchedule { + if v != nil { + return *v + } + var ret MaintenanceWindowSchedule + return ret + }).(MaintenanceWindowScheduleOutput) } -func (o ManagementZoneRuleConditionAzureComputeModeOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionAzureComputeMode) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +// The end date and time of the maintenance window validity period in yyyy-mm-dd HH:mm format +func (o MaintenanceWindowSchedulePtrOutput) End() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceWindowSchedule) *string { + if v == nil { + return nil + } + return &v.End + }).(pulumi.StringPtrOutput) } -func (o ManagementZoneRuleConditionAzureComputeModeOutput) Value() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionAzureComputeMode) *string { return v.Value }).(pulumi.StringPtrOutput) +// The recurrence of the maintenance window +func (o MaintenanceWindowSchedulePtrOutput) Recurrence() MaintenanceWindowScheduleRecurrencePtrOutput { + return o.ApplyT(func(v *MaintenanceWindowSchedule) *MaintenanceWindowScheduleRecurrence { + if v == nil { + return nil + } + return v.Recurrence + }).(MaintenanceWindowScheduleRecurrencePtrOutput) } -type ManagementZoneRuleConditionAzureComputeModeArrayOutput struct{ *pulumi.OutputState } - -func (ManagementZoneRuleConditionAzureComputeModeArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionAzureComputeMode)(nil)).Elem() +// The type of the schedule recurrence. Possible values are `DAILY`, `MONTHLY`, `ONCE` and `WEEKLY` +func (o MaintenanceWindowSchedulePtrOutput) RecurrenceType() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceWindowSchedule) *string { + if v == nil { + return nil + } + return &v.RecurrenceType + }).(pulumi.StringPtrOutput) } -func (o ManagementZoneRuleConditionAzureComputeModeArrayOutput) ToManagementZoneRuleConditionAzureComputeModeArrayOutput() ManagementZoneRuleConditionAzureComputeModeArrayOutput { - return o +// The start date and time of the maintenance window validity period in yyyy-mm-dd HH:mm format +func (o MaintenanceWindowSchedulePtrOutput) Start() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceWindowSchedule) *string { + if v == nil { + return nil + } + return &v.Start + }).(pulumi.StringPtrOutput) } -func (o ManagementZoneRuleConditionAzureComputeModeArrayOutput) ToManagementZoneRuleConditionAzureComputeModeArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureComputeModeArrayOutput { - return o +// allows for configuring properties that are not explicitly supported by the current version of this provider +func (o MaintenanceWindowSchedulePtrOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceWindowSchedule) *string { + if v == nil { + return nil + } + return v.Unknowns + }).(pulumi.StringPtrOutput) } -func (o ManagementZoneRuleConditionAzureComputeModeArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionAzureComputeModeOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionAzureComputeMode { - return vs[0].([]ManagementZoneRuleConditionAzureComputeMode)[vs[1].(int)] - }).(ManagementZoneRuleConditionAzureComputeModeOutput) +// The time zone of the start and end time. Default time zone is UTC. You can use either UTC offset `UTC+01:00` format or the IANA Time Zone Database format (for example, `Europe/Vienna`) +func (o MaintenanceWindowSchedulePtrOutput) ZoneId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceWindowSchedule) *string { + if v == nil { + return nil + } + return &v.ZoneId + }).(pulumi.StringPtrOutput) } -type ManagementZoneRuleConditionAzureComputeModeComparison struct { - Negate *bool `pulumi:"negate"` - Operator string `pulumi:"operator"` +type MaintenanceWindowScheduleRecurrence struct { + DayOfMonth *int `pulumi:"dayOfMonth"` + DayOfWeek *string `pulumi:"dayOfWeek"` + DurationMinutes int `pulumi:"durationMinutes"` + StartTime string `pulumi:"startTime"` + // allows for configuring properties that are not explicitly supported by the current version of this provider Unknowns *string `pulumi:"unknowns"` - Value *string `pulumi:"value"` } -// ManagementZoneRuleConditionAzureComputeModeComparisonInput is an input type that accepts ManagementZoneRuleConditionAzureComputeModeComparisonArgs and ManagementZoneRuleConditionAzureComputeModeComparisonOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionAzureComputeModeComparisonInput` via: +// MaintenanceWindowScheduleRecurrenceInput is an input type that accepts MaintenanceWindowScheduleRecurrenceArgs and MaintenanceWindowScheduleRecurrenceOutput values. +// You can construct a concrete instance of `MaintenanceWindowScheduleRecurrenceInput` via: // -// ManagementZoneRuleConditionAzureComputeModeComparisonArgs{...} -type ManagementZoneRuleConditionAzureComputeModeComparisonInput interface { +// MaintenanceWindowScheduleRecurrenceArgs{...} +type MaintenanceWindowScheduleRecurrenceInput interface { pulumi.Input - ToManagementZoneRuleConditionAzureComputeModeComparisonOutput() ManagementZoneRuleConditionAzureComputeModeComparisonOutput - ToManagementZoneRuleConditionAzureComputeModeComparisonOutputWithContext(context.Context) ManagementZoneRuleConditionAzureComputeModeComparisonOutput + ToMaintenanceWindowScheduleRecurrenceOutput() MaintenanceWindowScheduleRecurrenceOutput + ToMaintenanceWindowScheduleRecurrenceOutputWithContext(context.Context) MaintenanceWindowScheduleRecurrenceOutput } -type ManagementZoneRuleConditionAzureComputeModeComparisonArgs struct { - Negate pulumi.BoolPtrInput `pulumi:"negate"` - Operator pulumi.StringInput `pulumi:"operator"` +type MaintenanceWindowScheduleRecurrenceArgs struct { + DayOfMonth pulumi.IntPtrInput `pulumi:"dayOfMonth"` + DayOfWeek pulumi.StringPtrInput `pulumi:"dayOfWeek"` + DurationMinutes pulumi.IntInput `pulumi:"durationMinutes"` + StartTime pulumi.StringInput `pulumi:"startTime"` + // allows for configuring properties that are not explicitly supported by the current version of this provider Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` - Value pulumi.StringPtrInput `pulumi:"value"` -} - -func (ManagementZoneRuleConditionAzureComputeModeComparisonArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionAzureComputeModeComparison)(nil)).Elem() } -func (i ManagementZoneRuleConditionAzureComputeModeComparisonArgs) ToManagementZoneRuleConditionAzureComputeModeComparisonOutput() ManagementZoneRuleConditionAzureComputeModeComparisonOutput { - return i.ToManagementZoneRuleConditionAzureComputeModeComparisonOutputWithContext(context.Background()) -} - -func (i ManagementZoneRuleConditionAzureComputeModeComparisonArgs) ToManagementZoneRuleConditionAzureComputeModeComparisonOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureComputeModeComparisonOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionAzureComputeModeComparisonOutput) +func (MaintenanceWindowScheduleRecurrenceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceWindowScheduleRecurrence)(nil)).Elem() } -// ManagementZoneRuleConditionAzureComputeModeComparisonArrayInput is an input type that accepts ManagementZoneRuleConditionAzureComputeModeComparisonArray and ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionAzureComputeModeComparisonArrayInput` via: -// -// ManagementZoneRuleConditionAzureComputeModeComparisonArray{ ManagementZoneRuleConditionAzureComputeModeComparisonArgs{...} } -type ManagementZoneRuleConditionAzureComputeModeComparisonArrayInput interface { - pulumi.Input - - ToManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput() ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput - ToManagementZoneRuleConditionAzureComputeModeComparisonArrayOutputWithContext(context.Context) ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput +func (i MaintenanceWindowScheduleRecurrenceArgs) ToMaintenanceWindowScheduleRecurrenceOutput() MaintenanceWindowScheduleRecurrenceOutput { + return i.ToMaintenanceWindowScheduleRecurrenceOutputWithContext(context.Background()) } -type ManagementZoneRuleConditionAzureComputeModeComparisonArray []ManagementZoneRuleConditionAzureComputeModeComparisonInput - -func (ManagementZoneRuleConditionAzureComputeModeComparisonArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionAzureComputeModeComparison)(nil)).Elem() +func (i MaintenanceWindowScheduleRecurrenceArgs) ToMaintenanceWindowScheduleRecurrenceOutputWithContext(ctx context.Context) MaintenanceWindowScheduleRecurrenceOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScheduleRecurrenceOutput) } -func (i ManagementZoneRuleConditionAzureComputeModeComparisonArray) ToManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput() ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput { - return i.ToManagementZoneRuleConditionAzureComputeModeComparisonArrayOutputWithContext(context.Background()) +func (i MaintenanceWindowScheduleRecurrenceArgs) ToMaintenanceWindowScheduleRecurrencePtrOutput() MaintenanceWindowScheduleRecurrencePtrOutput { + return i.ToMaintenanceWindowScheduleRecurrencePtrOutputWithContext(context.Background()) } -func (i ManagementZoneRuleConditionAzureComputeModeComparisonArray) ToManagementZoneRuleConditionAzureComputeModeComparisonArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput) +func (i MaintenanceWindowScheduleRecurrenceArgs) ToMaintenanceWindowScheduleRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceWindowScheduleRecurrencePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScheduleRecurrenceOutput).ToMaintenanceWindowScheduleRecurrencePtrOutputWithContext(ctx) } -type ManagementZoneRuleConditionAzureComputeModeComparisonOutput struct{ *pulumi.OutputState } - -func (ManagementZoneRuleConditionAzureComputeModeComparisonOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionAzureComputeModeComparison)(nil)).Elem() -} +// MaintenanceWindowScheduleRecurrencePtrInput is an input type that accepts MaintenanceWindowScheduleRecurrenceArgs, MaintenanceWindowScheduleRecurrencePtr and MaintenanceWindowScheduleRecurrencePtrOutput values. +// You can construct a concrete instance of `MaintenanceWindowScheduleRecurrencePtrInput` via: +// +// MaintenanceWindowScheduleRecurrenceArgs{...} +// +// or: +// +// nil +type MaintenanceWindowScheduleRecurrencePtrInput interface { + pulumi.Input -func (o ManagementZoneRuleConditionAzureComputeModeComparisonOutput) ToManagementZoneRuleConditionAzureComputeModeComparisonOutput() ManagementZoneRuleConditionAzureComputeModeComparisonOutput { - return o + ToMaintenanceWindowScheduleRecurrencePtrOutput() MaintenanceWindowScheduleRecurrencePtrOutput + ToMaintenanceWindowScheduleRecurrencePtrOutputWithContext(context.Context) MaintenanceWindowScheduleRecurrencePtrOutput } -func (o ManagementZoneRuleConditionAzureComputeModeComparisonOutput) ToManagementZoneRuleConditionAzureComputeModeComparisonOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureComputeModeComparisonOutput { - return o -} +type maintenanceWindowScheduleRecurrencePtrType MaintenanceWindowScheduleRecurrenceArgs -func (o ManagementZoneRuleConditionAzureComputeModeComparisonOutput) Negate() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionAzureComputeModeComparison) *bool { return v.Negate }).(pulumi.BoolPtrOutput) +func MaintenanceWindowScheduleRecurrencePtr(v *MaintenanceWindowScheduleRecurrenceArgs) MaintenanceWindowScheduleRecurrencePtrInput { + return (*maintenanceWindowScheduleRecurrencePtrType)(v) } -func (o ManagementZoneRuleConditionAzureComputeModeComparisonOutput) Operator() pulumi.StringOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionAzureComputeModeComparison) string { return v.Operator }).(pulumi.StringOutput) +func (*maintenanceWindowScheduleRecurrencePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceWindowScheduleRecurrence)(nil)).Elem() } -func (o ManagementZoneRuleConditionAzureComputeModeComparisonOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionAzureComputeModeComparison) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +func (i *maintenanceWindowScheduleRecurrencePtrType) ToMaintenanceWindowScheduleRecurrencePtrOutput() MaintenanceWindowScheduleRecurrencePtrOutput { + return i.ToMaintenanceWindowScheduleRecurrencePtrOutputWithContext(context.Background()) } -func (o ManagementZoneRuleConditionAzureComputeModeComparisonOutput) Value() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionAzureComputeModeComparison) *string { return v.Value }).(pulumi.StringPtrOutput) +func (i *maintenanceWindowScheduleRecurrencePtrType) ToMaintenanceWindowScheduleRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceWindowScheduleRecurrencePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScheduleRecurrencePtrOutput) } -type ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput struct{ *pulumi.OutputState } +type MaintenanceWindowScheduleRecurrenceOutput struct{ *pulumi.OutputState } -func (ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionAzureComputeModeComparison)(nil)).Elem() +func (MaintenanceWindowScheduleRecurrenceOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceWindowScheduleRecurrence)(nil)).Elem() } -func (o ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput) ToManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput() ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput { +func (o MaintenanceWindowScheduleRecurrenceOutput) ToMaintenanceWindowScheduleRecurrenceOutput() MaintenanceWindowScheduleRecurrenceOutput { return o } -func (o ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput) ToManagementZoneRuleConditionAzureComputeModeComparisonArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput { +func (o MaintenanceWindowScheduleRecurrenceOutput) ToMaintenanceWindowScheduleRecurrenceOutputWithContext(ctx context.Context) MaintenanceWindowScheduleRecurrenceOutput { return o } -func (o ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionAzureComputeModeComparisonOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionAzureComputeModeComparison { - return vs[0].([]ManagementZoneRuleConditionAzureComputeModeComparison)[vs[1].(int)] - }).(ManagementZoneRuleConditionAzureComputeModeComparisonOutput) -} - -type ManagementZoneRuleConditionAzureSkuComparision struct { - Negate *bool `pulumi:"negate"` - Operator string `pulumi:"operator"` - // Deprecated: The value of the attribute type is implicit, therefore shouldn't get specified - Type *string `pulumi:"type"` - Unknowns *string `pulumi:"unknowns"` - Value *string `pulumi:"value"` -} - -// ManagementZoneRuleConditionAzureSkuComparisionInput is an input type that accepts ManagementZoneRuleConditionAzureSkuComparisionArgs and ManagementZoneRuleConditionAzureSkuComparisionOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionAzureSkuComparisionInput` via: -// -// ManagementZoneRuleConditionAzureSkuComparisionArgs{...} -type ManagementZoneRuleConditionAzureSkuComparisionInput interface { - pulumi.Input - - ToManagementZoneRuleConditionAzureSkuComparisionOutput() ManagementZoneRuleConditionAzureSkuComparisionOutput - ToManagementZoneRuleConditionAzureSkuComparisionOutputWithContext(context.Context) ManagementZoneRuleConditionAzureSkuComparisionOutput -} - -type ManagementZoneRuleConditionAzureSkuComparisionArgs struct { - Negate pulumi.BoolPtrInput `pulumi:"negate"` - Operator pulumi.StringInput `pulumi:"operator"` - // Deprecated: The value of the attribute type is implicit, therefore shouldn't get specified - Type pulumi.StringPtrInput `pulumi:"type"` - Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` - Value pulumi.StringPtrInput `pulumi:"value"` -} - -func (ManagementZoneRuleConditionAzureSkuComparisionArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionAzureSkuComparision)(nil)).Elem() -} - -func (i ManagementZoneRuleConditionAzureSkuComparisionArgs) ToManagementZoneRuleConditionAzureSkuComparisionOutput() ManagementZoneRuleConditionAzureSkuComparisionOutput { - return i.ToManagementZoneRuleConditionAzureSkuComparisionOutputWithContext(context.Background()) -} - -func (i ManagementZoneRuleConditionAzureSkuComparisionArgs) ToManagementZoneRuleConditionAzureSkuComparisionOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureSkuComparisionOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionAzureSkuComparisionOutput) +func (o MaintenanceWindowScheduleRecurrenceOutput) ToMaintenanceWindowScheduleRecurrencePtrOutput() MaintenanceWindowScheduleRecurrencePtrOutput { + return o.ToMaintenanceWindowScheduleRecurrencePtrOutputWithContext(context.Background()) } -// ManagementZoneRuleConditionAzureSkuComparisionArrayInput is an input type that accepts ManagementZoneRuleConditionAzureSkuComparisionArray and ManagementZoneRuleConditionAzureSkuComparisionArrayOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionAzureSkuComparisionArrayInput` via: -// -// ManagementZoneRuleConditionAzureSkuComparisionArray{ ManagementZoneRuleConditionAzureSkuComparisionArgs{...} } -type ManagementZoneRuleConditionAzureSkuComparisionArrayInput interface { - pulumi.Input - - ToManagementZoneRuleConditionAzureSkuComparisionArrayOutput() ManagementZoneRuleConditionAzureSkuComparisionArrayOutput - ToManagementZoneRuleConditionAzureSkuComparisionArrayOutputWithContext(context.Context) ManagementZoneRuleConditionAzureSkuComparisionArrayOutput +func (o MaintenanceWindowScheduleRecurrenceOutput) ToMaintenanceWindowScheduleRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceWindowScheduleRecurrencePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceWindowScheduleRecurrence) *MaintenanceWindowScheduleRecurrence { + return &v + }).(MaintenanceWindowScheduleRecurrencePtrOutput) } -type ManagementZoneRuleConditionAzureSkuComparisionArray []ManagementZoneRuleConditionAzureSkuComparisionInput - -func (ManagementZoneRuleConditionAzureSkuComparisionArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionAzureSkuComparision)(nil)).Elem() +func (o MaintenanceWindowScheduleRecurrenceOutput) DayOfMonth() pulumi.IntPtrOutput { + return o.ApplyT(func(v MaintenanceWindowScheduleRecurrence) *int { return v.DayOfMonth }).(pulumi.IntPtrOutput) } -func (i ManagementZoneRuleConditionAzureSkuComparisionArray) ToManagementZoneRuleConditionAzureSkuComparisionArrayOutput() ManagementZoneRuleConditionAzureSkuComparisionArrayOutput { - return i.ToManagementZoneRuleConditionAzureSkuComparisionArrayOutputWithContext(context.Background()) +func (o MaintenanceWindowScheduleRecurrenceOutput) DayOfWeek() pulumi.StringPtrOutput { + return o.ApplyT(func(v MaintenanceWindowScheduleRecurrence) *string { return v.DayOfWeek }).(pulumi.StringPtrOutput) } -func (i ManagementZoneRuleConditionAzureSkuComparisionArray) ToManagementZoneRuleConditionAzureSkuComparisionArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureSkuComparisionArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionAzureSkuComparisionArrayOutput) +func (o MaintenanceWindowScheduleRecurrenceOutput) DurationMinutes() pulumi.IntOutput { + return o.ApplyT(func(v MaintenanceWindowScheduleRecurrence) int { return v.DurationMinutes }).(pulumi.IntOutput) } -type ManagementZoneRuleConditionAzureSkuComparisionOutput struct{ *pulumi.OutputState } - -func (ManagementZoneRuleConditionAzureSkuComparisionOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionAzureSkuComparision)(nil)).Elem() +func (o MaintenanceWindowScheduleRecurrenceOutput) StartTime() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceWindowScheduleRecurrence) string { return v.StartTime }).(pulumi.StringOutput) } -func (o ManagementZoneRuleConditionAzureSkuComparisionOutput) ToManagementZoneRuleConditionAzureSkuComparisionOutput() ManagementZoneRuleConditionAzureSkuComparisionOutput { - return o +// allows for configuring properties that are not explicitly supported by the current version of this provider +func (o MaintenanceWindowScheduleRecurrenceOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v MaintenanceWindowScheduleRecurrence) *string { return v.Unknowns }).(pulumi.StringPtrOutput) } -func (o ManagementZoneRuleConditionAzureSkuComparisionOutput) ToManagementZoneRuleConditionAzureSkuComparisionOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureSkuComparisionOutput { - return o -} +type MaintenanceWindowScheduleRecurrencePtrOutput struct{ *pulumi.OutputState } -func (o ManagementZoneRuleConditionAzureSkuComparisionOutput) Negate() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionAzureSkuComparision) *bool { return v.Negate }).(pulumi.BoolPtrOutput) +func (MaintenanceWindowScheduleRecurrencePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceWindowScheduleRecurrence)(nil)).Elem() } -func (o ManagementZoneRuleConditionAzureSkuComparisionOutput) Operator() pulumi.StringOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionAzureSkuComparision) string { return v.Operator }).(pulumi.StringOutput) +func (o MaintenanceWindowScheduleRecurrencePtrOutput) ToMaintenanceWindowScheduleRecurrencePtrOutput() MaintenanceWindowScheduleRecurrencePtrOutput { + return o } -// Deprecated: The value of the attribute type is implicit, therefore shouldn't get specified -func (o ManagementZoneRuleConditionAzureSkuComparisionOutput) Type() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionAzureSkuComparision) *string { return v.Type }).(pulumi.StringPtrOutput) +func (o MaintenanceWindowScheduleRecurrencePtrOutput) ToMaintenanceWindowScheduleRecurrencePtrOutputWithContext(ctx context.Context) MaintenanceWindowScheduleRecurrencePtrOutput { + return o } -func (o ManagementZoneRuleConditionAzureSkuComparisionOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionAzureSkuComparision) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +func (o MaintenanceWindowScheduleRecurrencePtrOutput) Elem() MaintenanceWindowScheduleRecurrenceOutput { + return o.ApplyT(func(v *MaintenanceWindowScheduleRecurrence) MaintenanceWindowScheduleRecurrence { + if v != nil { + return *v + } + var ret MaintenanceWindowScheduleRecurrence + return ret + }).(MaintenanceWindowScheduleRecurrenceOutput) } -func (o ManagementZoneRuleConditionAzureSkuComparisionOutput) Value() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionAzureSkuComparision) *string { return v.Value }).(pulumi.StringPtrOutput) +func (o MaintenanceWindowScheduleRecurrencePtrOutput) DayOfMonth() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MaintenanceWindowScheduleRecurrence) *int { + if v == nil { + return nil + } + return v.DayOfMonth + }).(pulumi.IntPtrOutput) } -type ManagementZoneRuleConditionAzureSkuComparisionArrayOutput struct{ *pulumi.OutputState } - -func (ManagementZoneRuleConditionAzureSkuComparisionArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionAzureSkuComparision)(nil)).Elem() +func (o MaintenanceWindowScheduleRecurrencePtrOutput) DayOfWeek() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceWindowScheduleRecurrence) *string { + if v == nil { + return nil + } + return v.DayOfWeek + }).(pulumi.StringPtrOutput) } -func (o ManagementZoneRuleConditionAzureSkuComparisionArrayOutput) ToManagementZoneRuleConditionAzureSkuComparisionArrayOutput() ManagementZoneRuleConditionAzureSkuComparisionArrayOutput { - return o +func (o MaintenanceWindowScheduleRecurrencePtrOutput) DurationMinutes() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MaintenanceWindowScheduleRecurrence) *int { + if v == nil { + return nil + } + return &v.DurationMinutes + }).(pulumi.IntPtrOutput) } -func (o ManagementZoneRuleConditionAzureSkuComparisionArrayOutput) ToManagementZoneRuleConditionAzureSkuComparisionArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureSkuComparisionArrayOutput { - return o +func (o MaintenanceWindowScheduleRecurrencePtrOutput) StartTime() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceWindowScheduleRecurrence) *string { + if v == nil { + return nil + } + return &v.StartTime + }).(pulumi.StringPtrOutput) } -func (o ManagementZoneRuleConditionAzureSkuComparisionArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionAzureSkuComparisionOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionAzureSkuComparision { - return vs[0].([]ManagementZoneRuleConditionAzureSkuComparision)[vs[1].(int)] - }).(ManagementZoneRuleConditionAzureSkuComparisionOutput) +// allows for configuring properties that are not explicitly supported by the current version of this provider +func (o MaintenanceWindowScheduleRecurrencePtrOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceWindowScheduleRecurrence) *string { + if v == nil { + return nil + } + return v.Unknowns + }).(pulumi.StringPtrOutput) } -type ManagementZoneRuleConditionAzureSkus struct { - Negate *bool `pulumi:"negate"` - Operator string `pulumi:"operator"` +type MaintenanceWindowScope struct { + // A list of Dynatrace entities (for example, hosts or services) to be included in the scope. Allowed values are Dynatrace entity IDs + Entities []string `pulumi:"entities"` + // A list of matching rules for dynamic scope formation. If several rules are set, the OR logic applies + Matches []MaintenanceWindowScopeMatch `pulumi:"matches"` + // allows for configuring properties that are not explicitly supported by the current version of this provider Unknowns *string `pulumi:"unknowns"` - Value *string `pulumi:"value"` } -// ManagementZoneRuleConditionAzureSkusInput is an input type that accepts ManagementZoneRuleConditionAzureSkusArgs and ManagementZoneRuleConditionAzureSkusOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionAzureSkusInput` via: +// MaintenanceWindowScopeInput is an input type that accepts MaintenanceWindowScopeArgs and MaintenanceWindowScopeOutput values. +// You can construct a concrete instance of `MaintenanceWindowScopeInput` via: // -// ManagementZoneRuleConditionAzureSkusArgs{...} -type ManagementZoneRuleConditionAzureSkusInput interface { +// MaintenanceWindowScopeArgs{...} +type MaintenanceWindowScopeInput interface { pulumi.Input - ToManagementZoneRuleConditionAzureSkusOutput() ManagementZoneRuleConditionAzureSkusOutput - ToManagementZoneRuleConditionAzureSkusOutputWithContext(context.Context) ManagementZoneRuleConditionAzureSkusOutput + ToMaintenanceWindowScopeOutput() MaintenanceWindowScopeOutput + ToMaintenanceWindowScopeOutputWithContext(context.Context) MaintenanceWindowScopeOutput } -type ManagementZoneRuleConditionAzureSkusArgs struct { - Negate pulumi.BoolPtrInput `pulumi:"negate"` - Operator pulumi.StringInput `pulumi:"operator"` +type MaintenanceWindowScopeArgs struct { + // A list of Dynatrace entities (for example, hosts or services) to be included in the scope. Allowed values are Dynatrace entity IDs + Entities pulumi.StringArrayInput `pulumi:"entities"` + // A list of matching rules for dynamic scope formation. If several rules are set, the OR logic applies + Matches MaintenanceWindowScopeMatchArrayInput `pulumi:"matches"` + // allows for configuring properties that are not explicitly supported by the current version of this provider Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` - Value pulumi.StringPtrInput `pulumi:"value"` } -func (ManagementZoneRuleConditionAzureSkusArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionAzureSkus)(nil)).Elem() +func (MaintenanceWindowScopeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceWindowScope)(nil)).Elem() +} + +func (i MaintenanceWindowScopeArgs) ToMaintenanceWindowScopeOutput() MaintenanceWindowScopeOutput { + return i.ToMaintenanceWindowScopeOutputWithContext(context.Background()) +} + +func (i MaintenanceWindowScopeArgs) ToMaintenanceWindowScopeOutputWithContext(ctx context.Context) MaintenanceWindowScopeOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScopeOutput) } -func (i ManagementZoneRuleConditionAzureSkusArgs) ToManagementZoneRuleConditionAzureSkusOutput() ManagementZoneRuleConditionAzureSkusOutput { - return i.ToManagementZoneRuleConditionAzureSkusOutputWithContext(context.Background()) +func (i MaintenanceWindowScopeArgs) ToMaintenanceWindowScopePtrOutput() MaintenanceWindowScopePtrOutput { + return i.ToMaintenanceWindowScopePtrOutputWithContext(context.Background()) } -func (i ManagementZoneRuleConditionAzureSkusArgs) ToManagementZoneRuleConditionAzureSkusOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureSkusOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionAzureSkusOutput) +func (i MaintenanceWindowScopeArgs) ToMaintenanceWindowScopePtrOutputWithContext(ctx context.Context) MaintenanceWindowScopePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScopeOutput).ToMaintenanceWindowScopePtrOutputWithContext(ctx) } -// ManagementZoneRuleConditionAzureSkusArrayInput is an input type that accepts ManagementZoneRuleConditionAzureSkusArray and ManagementZoneRuleConditionAzureSkusArrayOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionAzureSkusArrayInput` via: +// MaintenanceWindowScopePtrInput is an input type that accepts MaintenanceWindowScopeArgs, MaintenanceWindowScopePtr and MaintenanceWindowScopePtrOutput values. +// You can construct a concrete instance of `MaintenanceWindowScopePtrInput` via: +// +// MaintenanceWindowScopeArgs{...} +// +// or: // -// ManagementZoneRuleConditionAzureSkusArray{ ManagementZoneRuleConditionAzureSkusArgs{...} } -type ManagementZoneRuleConditionAzureSkusArrayInput interface { +// nil +type MaintenanceWindowScopePtrInput interface { pulumi.Input - ToManagementZoneRuleConditionAzureSkusArrayOutput() ManagementZoneRuleConditionAzureSkusArrayOutput - ToManagementZoneRuleConditionAzureSkusArrayOutputWithContext(context.Context) ManagementZoneRuleConditionAzureSkusArrayOutput + ToMaintenanceWindowScopePtrOutput() MaintenanceWindowScopePtrOutput + ToMaintenanceWindowScopePtrOutputWithContext(context.Context) MaintenanceWindowScopePtrOutput } -type ManagementZoneRuleConditionAzureSkusArray []ManagementZoneRuleConditionAzureSkusInput +type maintenanceWindowScopePtrType MaintenanceWindowScopeArgs + +func MaintenanceWindowScopePtr(v *MaintenanceWindowScopeArgs) MaintenanceWindowScopePtrInput { + return (*maintenanceWindowScopePtrType)(v) +} -func (ManagementZoneRuleConditionAzureSkusArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionAzureSkus)(nil)).Elem() +func (*maintenanceWindowScopePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceWindowScope)(nil)).Elem() } -func (i ManagementZoneRuleConditionAzureSkusArray) ToManagementZoneRuleConditionAzureSkusArrayOutput() ManagementZoneRuleConditionAzureSkusArrayOutput { - return i.ToManagementZoneRuleConditionAzureSkusArrayOutputWithContext(context.Background()) +func (i *maintenanceWindowScopePtrType) ToMaintenanceWindowScopePtrOutput() MaintenanceWindowScopePtrOutput { + return i.ToMaintenanceWindowScopePtrOutputWithContext(context.Background()) } -func (i ManagementZoneRuleConditionAzureSkusArray) ToManagementZoneRuleConditionAzureSkusArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureSkusArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionAzureSkusArrayOutput) +func (i *maintenanceWindowScopePtrType) ToMaintenanceWindowScopePtrOutputWithContext(ctx context.Context) MaintenanceWindowScopePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScopePtrOutput) } -type ManagementZoneRuleConditionAzureSkusOutput struct{ *pulumi.OutputState } +type MaintenanceWindowScopeOutput struct{ *pulumi.OutputState } -func (ManagementZoneRuleConditionAzureSkusOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionAzureSkus)(nil)).Elem() +func (MaintenanceWindowScopeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceWindowScope)(nil)).Elem() } -func (o ManagementZoneRuleConditionAzureSkusOutput) ToManagementZoneRuleConditionAzureSkusOutput() ManagementZoneRuleConditionAzureSkusOutput { +func (o MaintenanceWindowScopeOutput) ToMaintenanceWindowScopeOutput() MaintenanceWindowScopeOutput { return o } -func (o ManagementZoneRuleConditionAzureSkusOutput) ToManagementZoneRuleConditionAzureSkusOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureSkusOutput { +func (o MaintenanceWindowScopeOutput) ToMaintenanceWindowScopeOutputWithContext(ctx context.Context) MaintenanceWindowScopeOutput { return o } -func (o ManagementZoneRuleConditionAzureSkusOutput) Negate() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionAzureSkus) *bool { return v.Negate }).(pulumi.BoolPtrOutput) +func (o MaintenanceWindowScopeOutput) ToMaintenanceWindowScopePtrOutput() MaintenanceWindowScopePtrOutput { + return o.ToMaintenanceWindowScopePtrOutputWithContext(context.Background()) +} + +func (o MaintenanceWindowScopeOutput) ToMaintenanceWindowScopePtrOutputWithContext(ctx context.Context) MaintenanceWindowScopePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MaintenanceWindowScope) *MaintenanceWindowScope { + return &v + }).(MaintenanceWindowScopePtrOutput) } -func (o ManagementZoneRuleConditionAzureSkusOutput) Operator() pulumi.StringOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionAzureSkus) string { return v.Operator }).(pulumi.StringOutput) +// A list of Dynatrace entities (for example, hosts or services) to be included in the scope. Allowed values are Dynatrace entity IDs +func (o MaintenanceWindowScopeOutput) Entities() pulumi.StringArrayOutput { + return o.ApplyT(func(v MaintenanceWindowScope) []string { return v.Entities }).(pulumi.StringArrayOutput) } -func (o ManagementZoneRuleConditionAzureSkusOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionAzureSkus) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +// A list of matching rules for dynamic scope formation. If several rules are set, the OR logic applies +func (o MaintenanceWindowScopeOutput) Matches() MaintenanceWindowScopeMatchArrayOutput { + return o.ApplyT(func(v MaintenanceWindowScope) []MaintenanceWindowScopeMatch { return v.Matches }).(MaintenanceWindowScopeMatchArrayOutput) } -func (o ManagementZoneRuleConditionAzureSkusOutput) Value() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionAzureSkus) *string { return v.Value }).(pulumi.StringPtrOutput) +// allows for configuring properties that are not explicitly supported by the current version of this provider +func (o MaintenanceWindowScopeOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v MaintenanceWindowScope) *string { return v.Unknowns }).(pulumi.StringPtrOutput) } -type ManagementZoneRuleConditionAzureSkusArrayOutput struct{ *pulumi.OutputState } +type MaintenanceWindowScopePtrOutput struct{ *pulumi.OutputState } -func (ManagementZoneRuleConditionAzureSkusArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionAzureSkus)(nil)).Elem() +func (MaintenanceWindowScopePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MaintenanceWindowScope)(nil)).Elem() } -func (o ManagementZoneRuleConditionAzureSkusArrayOutput) ToManagementZoneRuleConditionAzureSkusArrayOutput() ManagementZoneRuleConditionAzureSkusArrayOutput { +func (o MaintenanceWindowScopePtrOutput) ToMaintenanceWindowScopePtrOutput() MaintenanceWindowScopePtrOutput { return o } -func (o ManagementZoneRuleConditionAzureSkusArrayOutput) ToManagementZoneRuleConditionAzureSkusArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureSkusArrayOutput { +func (o MaintenanceWindowScopePtrOutput) ToMaintenanceWindowScopePtrOutputWithContext(ctx context.Context) MaintenanceWindowScopePtrOutput { return o } -func (o ManagementZoneRuleConditionAzureSkusArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionAzureSkusOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionAzureSkus { - return vs[0].([]ManagementZoneRuleConditionAzureSkus)[vs[1].(int)] - }).(ManagementZoneRuleConditionAzureSkusOutput) +func (o MaintenanceWindowScopePtrOutput) Elem() MaintenanceWindowScopeOutput { + return o.ApplyT(func(v *MaintenanceWindowScope) MaintenanceWindowScope { + if v != nil { + return *v + } + var ret MaintenanceWindowScope + return ret + }).(MaintenanceWindowScopeOutput) } -type ManagementZoneRuleConditionBaseComparisonBasic struct { - Negate *bool `pulumi:"negate"` - Type string `pulumi:"type"` +// A list of Dynatrace entities (for example, hosts or services) to be included in the scope. Allowed values are Dynatrace entity IDs +func (o MaintenanceWindowScopePtrOutput) Entities() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MaintenanceWindowScope) []string { + if v == nil { + return nil + } + return v.Entities + }).(pulumi.StringArrayOutput) +} + +// A list of matching rules for dynamic scope formation. If several rules are set, the OR logic applies +func (o MaintenanceWindowScopePtrOutput) Matches() MaintenanceWindowScopeMatchArrayOutput { + return o.ApplyT(func(v *MaintenanceWindowScope) []MaintenanceWindowScopeMatch { + if v == nil { + return nil + } + return v.Matches + }).(MaintenanceWindowScopeMatchArrayOutput) +} + +// allows for configuring properties that are not explicitly supported by the current version of this provider +func (o MaintenanceWindowScopePtrOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MaintenanceWindowScope) *string { + if v == nil { + return nil + } + return v.Unknowns + }).(pulumi.StringPtrOutput) +} + +type MaintenanceWindowScopeMatch struct { + MzId *string `pulumi:"mzId"` + TagCombination *string `pulumi:"tagCombination"` + Tags []MaintenanceWindowScopeMatchTag `pulumi:"tags"` + // The type of the maintenance: planned or unplanned + Type *string `pulumi:"type"` + // allows for configuring properties that are not explicitly supported by the current version of this provider Unknowns *string `pulumi:"unknowns"` } -// ManagementZoneRuleConditionBaseComparisonBasicInput is an input type that accepts ManagementZoneRuleConditionBaseComparisonBasicArgs and ManagementZoneRuleConditionBaseComparisonBasicOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionBaseComparisonBasicInput` via: +// MaintenanceWindowScopeMatchInput is an input type that accepts MaintenanceWindowScopeMatchArgs and MaintenanceWindowScopeMatchOutput values. +// You can construct a concrete instance of `MaintenanceWindowScopeMatchInput` via: // -// ManagementZoneRuleConditionBaseComparisonBasicArgs{...} -type ManagementZoneRuleConditionBaseComparisonBasicInput interface { +// MaintenanceWindowScopeMatchArgs{...} +type MaintenanceWindowScopeMatchInput interface { pulumi.Input - ToManagementZoneRuleConditionBaseComparisonBasicOutput() ManagementZoneRuleConditionBaseComparisonBasicOutput - ToManagementZoneRuleConditionBaseComparisonBasicOutputWithContext(context.Context) ManagementZoneRuleConditionBaseComparisonBasicOutput + ToMaintenanceWindowScopeMatchOutput() MaintenanceWindowScopeMatchOutput + ToMaintenanceWindowScopeMatchOutputWithContext(context.Context) MaintenanceWindowScopeMatchOutput } -type ManagementZoneRuleConditionBaseComparisonBasicArgs struct { - Negate pulumi.BoolPtrInput `pulumi:"negate"` - Type pulumi.StringInput `pulumi:"type"` +type MaintenanceWindowScopeMatchArgs struct { + MzId pulumi.StringPtrInput `pulumi:"mzId"` + TagCombination pulumi.StringPtrInput `pulumi:"tagCombination"` + Tags MaintenanceWindowScopeMatchTagArrayInput `pulumi:"tags"` + // The type of the maintenance: planned or unplanned + Type pulumi.StringPtrInput `pulumi:"type"` + // allows for configuring properties that are not explicitly supported by the current version of this provider Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` } -func (ManagementZoneRuleConditionBaseComparisonBasicArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionBaseComparisonBasic)(nil)).Elem() +func (MaintenanceWindowScopeMatchArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceWindowScopeMatch)(nil)).Elem() } -func (i ManagementZoneRuleConditionBaseComparisonBasicArgs) ToManagementZoneRuleConditionBaseComparisonBasicOutput() ManagementZoneRuleConditionBaseComparisonBasicOutput { - return i.ToManagementZoneRuleConditionBaseComparisonBasicOutputWithContext(context.Background()) +func (i MaintenanceWindowScopeMatchArgs) ToMaintenanceWindowScopeMatchOutput() MaintenanceWindowScopeMatchOutput { + return i.ToMaintenanceWindowScopeMatchOutputWithContext(context.Background()) } -func (i ManagementZoneRuleConditionBaseComparisonBasicArgs) ToManagementZoneRuleConditionBaseComparisonBasicOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBaseComparisonBasicOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionBaseComparisonBasicOutput) +func (i MaintenanceWindowScopeMatchArgs) ToMaintenanceWindowScopeMatchOutputWithContext(ctx context.Context) MaintenanceWindowScopeMatchOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScopeMatchOutput) } -// ManagementZoneRuleConditionBaseComparisonBasicArrayInput is an input type that accepts ManagementZoneRuleConditionBaseComparisonBasicArray and ManagementZoneRuleConditionBaseComparisonBasicArrayOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionBaseComparisonBasicArrayInput` via: +// MaintenanceWindowScopeMatchArrayInput is an input type that accepts MaintenanceWindowScopeMatchArray and MaintenanceWindowScopeMatchArrayOutput values. +// You can construct a concrete instance of `MaintenanceWindowScopeMatchArrayInput` via: // -// ManagementZoneRuleConditionBaseComparisonBasicArray{ ManagementZoneRuleConditionBaseComparisonBasicArgs{...} } -type ManagementZoneRuleConditionBaseComparisonBasicArrayInput interface { +// MaintenanceWindowScopeMatchArray{ MaintenanceWindowScopeMatchArgs{...} } +type MaintenanceWindowScopeMatchArrayInput interface { pulumi.Input - ToManagementZoneRuleConditionBaseComparisonBasicArrayOutput() ManagementZoneRuleConditionBaseComparisonBasicArrayOutput - ToManagementZoneRuleConditionBaseComparisonBasicArrayOutputWithContext(context.Context) ManagementZoneRuleConditionBaseComparisonBasicArrayOutput + ToMaintenanceWindowScopeMatchArrayOutput() MaintenanceWindowScopeMatchArrayOutput + ToMaintenanceWindowScopeMatchArrayOutputWithContext(context.Context) MaintenanceWindowScopeMatchArrayOutput } -type ManagementZoneRuleConditionBaseComparisonBasicArray []ManagementZoneRuleConditionBaseComparisonBasicInput +type MaintenanceWindowScopeMatchArray []MaintenanceWindowScopeMatchInput -func (ManagementZoneRuleConditionBaseComparisonBasicArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionBaseComparisonBasic)(nil)).Elem() +func (MaintenanceWindowScopeMatchArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]MaintenanceWindowScopeMatch)(nil)).Elem() } -func (i ManagementZoneRuleConditionBaseComparisonBasicArray) ToManagementZoneRuleConditionBaseComparisonBasicArrayOutput() ManagementZoneRuleConditionBaseComparisonBasicArrayOutput { - return i.ToManagementZoneRuleConditionBaseComparisonBasicArrayOutputWithContext(context.Background()) +func (i MaintenanceWindowScopeMatchArray) ToMaintenanceWindowScopeMatchArrayOutput() MaintenanceWindowScopeMatchArrayOutput { + return i.ToMaintenanceWindowScopeMatchArrayOutputWithContext(context.Background()) } -func (i ManagementZoneRuleConditionBaseComparisonBasicArray) ToManagementZoneRuleConditionBaseComparisonBasicArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBaseComparisonBasicArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionBaseComparisonBasicArrayOutput) +func (i MaintenanceWindowScopeMatchArray) ToMaintenanceWindowScopeMatchArrayOutputWithContext(ctx context.Context) MaintenanceWindowScopeMatchArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScopeMatchArrayOutput) } -type ManagementZoneRuleConditionBaseComparisonBasicOutput struct{ *pulumi.OutputState } +type MaintenanceWindowScopeMatchOutput struct{ *pulumi.OutputState } -func (ManagementZoneRuleConditionBaseComparisonBasicOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionBaseComparisonBasic)(nil)).Elem() +func (MaintenanceWindowScopeMatchOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceWindowScopeMatch)(nil)).Elem() } -func (o ManagementZoneRuleConditionBaseComparisonBasicOutput) ToManagementZoneRuleConditionBaseComparisonBasicOutput() ManagementZoneRuleConditionBaseComparisonBasicOutput { +func (o MaintenanceWindowScopeMatchOutput) ToMaintenanceWindowScopeMatchOutput() MaintenanceWindowScopeMatchOutput { return o } -func (o ManagementZoneRuleConditionBaseComparisonBasicOutput) ToManagementZoneRuleConditionBaseComparisonBasicOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBaseComparisonBasicOutput { +func (o MaintenanceWindowScopeMatchOutput) ToMaintenanceWindowScopeMatchOutputWithContext(ctx context.Context) MaintenanceWindowScopeMatchOutput { return o } -func (o ManagementZoneRuleConditionBaseComparisonBasicOutput) Negate() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionBaseComparisonBasic) *bool { return v.Negate }).(pulumi.BoolPtrOutput) +func (o MaintenanceWindowScopeMatchOutput) MzId() pulumi.StringPtrOutput { + return o.ApplyT(func(v MaintenanceWindowScopeMatch) *string { return v.MzId }).(pulumi.StringPtrOutput) +} + +func (o MaintenanceWindowScopeMatchOutput) TagCombination() pulumi.StringPtrOutput { + return o.ApplyT(func(v MaintenanceWindowScopeMatch) *string { return v.TagCombination }).(pulumi.StringPtrOutput) +} + +func (o MaintenanceWindowScopeMatchOutput) Tags() MaintenanceWindowScopeMatchTagArrayOutput { + return o.ApplyT(func(v MaintenanceWindowScopeMatch) []MaintenanceWindowScopeMatchTag { return v.Tags }).(MaintenanceWindowScopeMatchTagArrayOutput) } -func (o ManagementZoneRuleConditionBaseComparisonBasicOutput) Type() pulumi.StringOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionBaseComparisonBasic) string { return v.Type }).(pulumi.StringOutput) +// The type of the maintenance: planned or unplanned +func (o MaintenanceWindowScopeMatchOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v MaintenanceWindowScopeMatch) *string { return v.Type }).(pulumi.StringPtrOutput) } -func (o ManagementZoneRuleConditionBaseComparisonBasicOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionBaseComparisonBasic) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +// allows for configuring properties that are not explicitly supported by the current version of this provider +func (o MaintenanceWindowScopeMatchOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v MaintenanceWindowScopeMatch) *string { return v.Unknowns }).(pulumi.StringPtrOutput) } -type ManagementZoneRuleConditionBaseComparisonBasicArrayOutput struct{ *pulumi.OutputState } +type MaintenanceWindowScopeMatchArrayOutput struct{ *pulumi.OutputState } -func (ManagementZoneRuleConditionBaseComparisonBasicArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionBaseComparisonBasic)(nil)).Elem() +func (MaintenanceWindowScopeMatchArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]MaintenanceWindowScopeMatch)(nil)).Elem() } -func (o ManagementZoneRuleConditionBaseComparisonBasicArrayOutput) ToManagementZoneRuleConditionBaseComparisonBasicArrayOutput() ManagementZoneRuleConditionBaseComparisonBasicArrayOutput { +func (o MaintenanceWindowScopeMatchArrayOutput) ToMaintenanceWindowScopeMatchArrayOutput() MaintenanceWindowScopeMatchArrayOutput { return o } -func (o ManagementZoneRuleConditionBaseComparisonBasicArrayOutput) ToManagementZoneRuleConditionBaseComparisonBasicArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBaseComparisonBasicArrayOutput { +func (o MaintenanceWindowScopeMatchArrayOutput) ToMaintenanceWindowScopeMatchArrayOutputWithContext(ctx context.Context) MaintenanceWindowScopeMatchArrayOutput { return o } -func (o ManagementZoneRuleConditionBaseComparisonBasicArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionBaseComparisonBasicOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionBaseComparisonBasic { - return vs[0].([]ManagementZoneRuleConditionBaseComparisonBasic)[vs[1].(int)] - }).(ManagementZoneRuleConditionBaseComparisonBasicOutput) +func (o MaintenanceWindowScopeMatchArrayOutput) Index(i pulumi.IntInput) MaintenanceWindowScopeMatchOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) MaintenanceWindowScopeMatch { + return vs[0].([]MaintenanceWindowScopeMatch)[vs[1].(int)] + }).(MaintenanceWindowScopeMatchOutput) } -type ManagementZoneRuleConditionBaseConditionKey struct { - Attribute string `pulumi:"attribute"` - Type *string `pulumi:"type"` - Unknowns *string `pulumi:"unknowns"` +type MaintenanceWindowScopeMatchTag struct { + Context string `pulumi:"context"` + Key string `pulumi:"key"` + // allows for configuring properties that are not explicitly supported by the current version of this provider + Unknowns *string `pulumi:"unknowns"` + Value *string `pulumi:"value"` } -// ManagementZoneRuleConditionBaseConditionKeyInput is an input type that accepts ManagementZoneRuleConditionBaseConditionKeyArgs and ManagementZoneRuleConditionBaseConditionKeyOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionBaseConditionKeyInput` via: +// MaintenanceWindowScopeMatchTagInput is an input type that accepts MaintenanceWindowScopeMatchTagArgs and MaintenanceWindowScopeMatchTagOutput values. +// You can construct a concrete instance of `MaintenanceWindowScopeMatchTagInput` via: // -// ManagementZoneRuleConditionBaseConditionKeyArgs{...} -type ManagementZoneRuleConditionBaseConditionKeyInput interface { +// MaintenanceWindowScopeMatchTagArgs{...} +type MaintenanceWindowScopeMatchTagInput interface { pulumi.Input - ToManagementZoneRuleConditionBaseConditionKeyOutput() ManagementZoneRuleConditionBaseConditionKeyOutput - ToManagementZoneRuleConditionBaseConditionKeyOutputWithContext(context.Context) ManagementZoneRuleConditionBaseConditionKeyOutput + ToMaintenanceWindowScopeMatchTagOutput() MaintenanceWindowScopeMatchTagOutput + ToMaintenanceWindowScopeMatchTagOutputWithContext(context.Context) MaintenanceWindowScopeMatchTagOutput } -type ManagementZoneRuleConditionBaseConditionKeyArgs struct { - Attribute pulumi.StringInput `pulumi:"attribute"` - Type pulumi.StringPtrInput `pulumi:"type"` - Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` +type MaintenanceWindowScopeMatchTagArgs struct { + Context pulumi.StringInput `pulumi:"context"` + Key pulumi.StringInput `pulumi:"key"` + // allows for configuring properties that are not explicitly supported by the current version of this provider + Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` + Value pulumi.StringPtrInput `pulumi:"value"` } -func (ManagementZoneRuleConditionBaseConditionKeyArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionBaseConditionKey)(nil)).Elem() +func (MaintenanceWindowScopeMatchTagArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceWindowScopeMatchTag)(nil)).Elem() } -func (i ManagementZoneRuleConditionBaseConditionKeyArgs) ToManagementZoneRuleConditionBaseConditionKeyOutput() ManagementZoneRuleConditionBaseConditionKeyOutput { - return i.ToManagementZoneRuleConditionBaseConditionKeyOutputWithContext(context.Background()) +func (i MaintenanceWindowScopeMatchTagArgs) ToMaintenanceWindowScopeMatchTagOutput() MaintenanceWindowScopeMatchTagOutput { + return i.ToMaintenanceWindowScopeMatchTagOutputWithContext(context.Background()) } -func (i ManagementZoneRuleConditionBaseConditionKeyArgs) ToManagementZoneRuleConditionBaseConditionKeyOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBaseConditionKeyOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionBaseConditionKeyOutput) +func (i MaintenanceWindowScopeMatchTagArgs) ToMaintenanceWindowScopeMatchTagOutputWithContext(ctx context.Context) MaintenanceWindowScopeMatchTagOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScopeMatchTagOutput) } -// ManagementZoneRuleConditionBaseConditionKeyArrayInput is an input type that accepts ManagementZoneRuleConditionBaseConditionKeyArray and ManagementZoneRuleConditionBaseConditionKeyArrayOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionBaseConditionKeyArrayInput` via: +// MaintenanceWindowScopeMatchTagArrayInput is an input type that accepts MaintenanceWindowScopeMatchTagArray and MaintenanceWindowScopeMatchTagArrayOutput values. +// You can construct a concrete instance of `MaintenanceWindowScopeMatchTagArrayInput` via: // -// ManagementZoneRuleConditionBaseConditionKeyArray{ ManagementZoneRuleConditionBaseConditionKeyArgs{...} } -type ManagementZoneRuleConditionBaseConditionKeyArrayInput interface { +// MaintenanceWindowScopeMatchTagArray{ MaintenanceWindowScopeMatchTagArgs{...} } +type MaintenanceWindowScopeMatchTagArrayInput interface { pulumi.Input - ToManagementZoneRuleConditionBaseConditionKeyArrayOutput() ManagementZoneRuleConditionBaseConditionKeyArrayOutput - ToManagementZoneRuleConditionBaseConditionKeyArrayOutputWithContext(context.Context) ManagementZoneRuleConditionBaseConditionKeyArrayOutput + ToMaintenanceWindowScopeMatchTagArrayOutput() MaintenanceWindowScopeMatchTagArrayOutput + ToMaintenanceWindowScopeMatchTagArrayOutputWithContext(context.Context) MaintenanceWindowScopeMatchTagArrayOutput } -type ManagementZoneRuleConditionBaseConditionKeyArray []ManagementZoneRuleConditionBaseConditionKeyInput +type MaintenanceWindowScopeMatchTagArray []MaintenanceWindowScopeMatchTagInput -func (ManagementZoneRuleConditionBaseConditionKeyArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionBaseConditionKey)(nil)).Elem() +func (MaintenanceWindowScopeMatchTagArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]MaintenanceWindowScopeMatchTag)(nil)).Elem() } -func (i ManagementZoneRuleConditionBaseConditionKeyArray) ToManagementZoneRuleConditionBaseConditionKeyArrayOutput() ManagementZoneRuleConditionBaseConditionKeyArrayOutput { - return i.ToManagementZoneRuleConditionBaseConditionKeyArrayOutputWithContext(context.Background()) +func (i MaintenanceWindowScopeMatchTagArray) ToMaintenanceWindowScopeMatchTagArrayOutput() MaintenanceWindowScopeMatchTagArrayOutput { + return i.ToMaintenanceWindowScopeMatchTagArrayOutputWithContext(context.Background()) } -func (i ManagementZoneRuleConditionBaseConditionKeyArray) ToManagementZoneRuleConditionBaseConditionKeyArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBaseConditionKeyArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionBaseConditionKeyArrayOutput) +func (i MaintenanceWindowScopeMatchTagArray) ToMaintenanceWindowScopeMatchTagArrayOutputWithContext(ctx context.Context) MaintenanceWindowScopeMatchTagArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(MaintenanceWindowScopeMatchTagArrayOutput) } -type ManagementZoneRuleConditionBaseConditionKeyOutput struct{ *pulumi.OutputState } +type MaintenanceWindowScopeMatchTagOutput struct{ *pulumi.OutputState } -func (ManagementZoneRuleConditionBaseConditionKeyOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionBaseConditionKey)(nil)).Elem() +func (MaintenanceWindowScopeMatchTagOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MaintenanceWindowScopeMatchTag)(nil)).Elem() } -func (o ManagementZoneRuleConditionBaseConditionKeyOutput) ToManagementZoneRuleConditionBaseConditionKeyOutput() ManagementZoneRuleConditionBaseConditionKeyOutput { +func (o MaintenanceWindowScopeMatchTagOutput) ToMaintenanceWindowScopeMatchTagOutput() MaintenanceWindowScopeMatchTagOutput { return o } -func (o ManagementZoneRuleConditionBaseConditionKeyOutput) ToManagementZoneRuleConditionBaseConditionKeyOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBaseConditionKeyOutput { +func (o MaintenanceWindowScopeMatchTagOutput) ToMaintenanceWindowScopeMatchTagOutputWithContext(ctx context.Context) MaintenanceWindowScopeMatchTagOutput { return o } -func (o ManagementZoneRuleConditionBaseConditionKeyOutput) Attribute() pulumi.StringOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionBaseConditionKey) string { return v.Attribute }).(pulumi.StringOutput) +func (o MaintenanceWindowScopeMatchTagOutput) Context() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceWindowScopeMatchTag) string { return v.Context }).(pulumi.StringOutput) +} + +func (o MaintenanceWindowScopeMatchTagOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v MaintenanceWindowScopeMatchTag) string { return v.Key }).(pulumi.StringOutput) } -func (o ManagementZoneRuleConditionBaseConditionKeyOutput) Type() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionBaseConditionKey) *string { return v.Type }).(pulumi.StringPtrOutput) +// allows for configuring properties that are not explicitly supported by the current version of this provider +func (o MaintenanceWindowScopeMatchTagOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v MaintenanceWindowScopeMatchTag) *string { return v.Unknowns }).(pulumi.StringPtrOutput) } -func (o ManagementZoneRuleConditionBaseConditionKeyOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionBaseConditionKey) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +func (o MaintenanceWindowScopeMatchTagOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v MaintenanceWindowScopeMatchTag) *string { return v.Value }).(pulumi.StringPtrOutput) } -type ManagementZoneRuleConditionBaseConditionKeyArrayOutput struct{ *pulumi.OutputState } +type MaintenanceWindowScopeMatchTagArrayOutput struct{ *pulumi.OutputState } -func (ManagementZoneRuleConditionBaseConditionKeyArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionBaseConditionKey)(nil)).Elem() +func (MaintenanceWindowScopeMatchTagArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]MaintenanceWindowScopeMatchTag)(nil)).Elem() } -func (o ManagementZoneRuleConditionBaseConditionKeyArrayOutput) ToManagementZoneRuleConditionBaseConditionKeyArrayOutput() ManagementZoneRuleConditionBaseConditionKeyArrayOutput { +func (o MaintenanceWindowScopeMatchTagArrayOutput) ToMaintenanceWindowScopeMatchTagArrayOutput() MaintenanceWindowScopeMatchTagArrayOutput { return o } -func (o ManagementZoneRuleConditionBaseConditionKeyArrayOutput) ToManagementZoneRuleConditionBaseConditionKeyArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBaseConditionKeyArrayOutput { +func (o MaintenanceWindowScopeMatchTagArrayOutput) ToMaintenanceWindowScopeMatchTagArrayOutputWithContext(ctx context.Context) MaintenanceWindowScopeMatchTagArrayOutput { return o } -func (o ManagementZoneRuleConditionBaseConditionKeyArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionBaseConditionKeyOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionBaseConditionKey { - return vs[0].([]ManagementZoneRuleConditionBaseConditionKey)[vs[1].(int)] - }).(ManagementZoneRuleConditionBaseConditionKeyOutput) +func (o MaintenanceWindowScopeMatchTagArrayOutput) Index(i pulumi.IntInput) MaintenanceWindowScopeMatchTagOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) MaintenanceWindowScopeMatchTag { + return vs[0].([]MaintenanceWindowScopeMatchTag)[vs[1].(int)] + }).(MaintenanceWindowScopeMatchTagOutput) } -type ManagementZoneRuleConditionBitness struct { - Negate *bool `pulumi:"negate"` - Operator string `pulumi:"operator"` - Unknowns *string `pulumi:"unknowns"` - Value *string `pulumi:"value"` +type ManagementZoneDimensionalRule struct { + AppliesTo string `pulumi:"appliesTo"` + Conditions []ManagementZoneDimensionalRuleCondition `pulumi:"conditions"` + Enabled *bool `pulumi:"enabled"` + Unknowns *string `pulumi:"unknowns"` } -// ManagementZoneRuleConditionBitnessInput is an input type that accepts ManagementZoneRuleConditionBitnessArgs and ManagementZoneRuleConditionBitnessOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionBitnessInput` via: +// ManagementZoneDimensionalRuleInput is an input type that accepts ManagementZoneDimensionalRuleArgs and ManagementZoneDimensionalRuleOutput values. +// You can construct a concrete instance of `ManagementZoneDimensionalRuleInput` via: // -// ManagementZoneRuleConditionBitnessArgs{...} -type ManagementZoneRuleConditionBitnessInput interface { +// ManagementZoneDimensionalRuleArgs{...} +type ManagementZoneDimensionalRuleInput interface { pulumi.Input - ToManagementZoneRuleConditionBitnessOutput() ManagementZoneRuleConditionBitnessOutput - ToManagementZoneRuleConditionBitnessOutputWithContext(context.Context) ManagementZoneRuleConditionBitnessOutput + ToManagementZoneDimensionalRuleOutput() ManagementZoneDimensionalRuleOutput + ToManagementZoneDimensionalRuleOutputWithContext(context.Context) ManagementZoneDimensionalRuleOutput } -type ManagementZoneRuleConditionBitnessArgs struct { - Negate pulumi.BoolPtrInput `pulumi:"negate"` - Operator pulumi.StringInput `pulumi:"operator"` - Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` - Value pulumi.StringPtrInput `pulumi:"value"` +type ManagementZoneDimensionalRuleArgs struct { + AppliesTo pulumi.StringInput `pulumi:"appliesTo"` + Conditions ManagementZoneDimensionalRuleConditionArrayInput `pulumi:"conditions"` + Enabled pulumi.BoolPtrInput `pulumi:"enabled"` + Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` } -func (ManagementZoneRuleConditionBitnessArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionBitness)(nil)).Elem() +func (ManagementZoneDimensionalRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneDimensionalRule)(nil)).Elem() } -func (i ManagementZoneRuleConditionBitnessArgs) ToManagementZoneRuleConditionBitnessOutput() ManagementZoneRuleConditionBitnessOutput { - return i.ToManagementZoneRuleConditionBitnessOutputWithContext(context.Background()) +func (i ManagementZoneDimensionalRuleArgs) ToManagementZoneDimensionalRuleOutput() ManagementZoneDimensionalRuleOutput { + return i.ToManagementZoneDimensionalRuleOutputWithContext(context.Background()) } -func (i ManagementZoneRuleConditionBitnessArgs) ToManagementZoneRuleConditionBitnessOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBitnessOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionBitnessOutput) +func (i ManagementZoneDimensionalRuleArgs) ToManagementZoneDimensionalRuleOutputWithContext(ctx context.Context) ManagementZoneDimensionalRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneDimensionalRuleOutput) } -// ManagementZoneRuleConditionBitnessArrayInput is an input type that accepts ManagementZoneRuleConditionBitnessArray and ManagementZoneRuleConditionBitnessArrayOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionBitnessArrayInput` via: +// ManagementZoneDimensionalRuleArrayInput is an input type that accepts ManagementZoneDimensionalRuleArray and ManagementZoneDimensionalRuleArrayOutput values. +// You can construct a concrete instance of `ManagementZoneDimensionalRuleArrayInput` via: // -// ManagementZoneRuleConditionBitnessArray{ ManagementZoneRuleConditionBitnessArgs{...} } -type ManagementZoneRuleConditionBitnessArrayInput interface { +// ManagementZoneDimensionalRuleArray{ ManagementZoneDimensionalRuleArgs{...} } +type ManagementZoneDimensionalRuleArrayInput interface { pulumi.Input - ToManagementZoneRuleConditionBitnessArrayOutput() ManagementZoneRuleConditionBitnessArrayOutput - ToManagementZoneRuleConditionBitnessArrayOutputWithContext(context.Context) ManagementZoneRuleConditionBitnessArrayOutput + ToManagementZoneDimensionalRuleArrayOutput() ManagementZoneDimensionalRuleArrayOutput + ToManagementZoneDimensionalRuleArrayOutputWithContext(context.Context) ManagementZoneDimensionalRuleArrayOutput } -type ManagementZoneRuleConditionBitnessArray []ManagementZoneRuleConditionBitnessInput +type ManagementZoneDimensionalRuleArray []ManagementZoneDimensionalRuleInput -func (ManagementZoneRuleConditionBitnessArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionBitness)(nil)).Elem() +func (ManagementZoneDimensionalRuleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneDimensionalRule)(nil)).Elem() } -func (i ManagementZoneRuleConditionBitnessArray) ToManagementZoneRuleConditionBitnessArrayOutput() ManagementZoneRuleConditionBitnessArrayOutput { - return i.ToManagementZoneRuleConditionBitnessArrayOutputWithContext(context.Background()) +func (i ManagementZoneDimensionalRuleArray) ToManagementZoneDimensionalRuleArrayOutput() ManagementZoneDimensionalRuleArrayOutput { + return i.ToManagementZoneDimensionalRuleArrayOutputWithContext(context.Background()) } -func (i ManagementZoneRuleConditionBitnessArray) ToManagementZoneRuleConditionBitnessArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBitnessArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionBitnessArrayOutput) +func (i ManagementZoneDimensionalRuleArray) ToManagementZoneDimensionalRuleArrayOutputWithContext(ctx context.Context) ManagementZoneDimensionalRuleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneDimensionalRuleArrayOutput) } -type ManagementZoneRuleConditionBitnessOutput struct{ *pulumi.OutputState } +type ManagementZoneDimensionalRuleOutput struct{ *pulumi.OutputState } -func (ManagementZoneRuleConditionBitnessOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionBitness)(nil)).Elem() +func (ManagementZoneDimensionalRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneDimensionalRule)(nil)).Elem() } -func (o ManagementZoneRuleConditionBitnessOutput) ToManagementZoneRuleConditionBitnessOutput() ManagementZoneRuleConditionBitnessOutput { +func (o ManagementZoneDimensionalRuleOutput) ToManagementZoneDimensionalRuleOutput() ManagementZoneDimensionalRuleOutput { return o } -func (o ManagementZoneRuleConditionBitnessOutput) ToManagementZoneRuleConditionBitnessOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBitnessOutput { +func (o ManagementZoneDimensionalRuleOutput) ToManagementZoneDimensionalRuleOutputWithContext(ctx context.Context) ManagementZoneDimensionalRuleOutput { return o } -func (o ManagementZoneRuleConditionBitnessOutput) Negate() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionBitness) *bool { return v.Negate }).(pulumi.BoolPtrOutput) +func (o ManagementZoneDimensionalRuleOutput) AppliesTo() pulumi.StringOutput { + return o.ApplyT(func(v ManagementZoneDimensionalRule) string { return v.AppliesTo }).(pulumi.StringOutput) } -func (o ManagementZoneRuleConditionBitnessOutput) Operator() pulumi.StringOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionBitness) string { return v.Operator }).(pulumi.StringOutput) +func (o ManagementZoneDimensionalRuleOutput) Conditions() ManagementZoneDimensionalRuleConditionArrayOutput { + return o.ApplyT(func(v ManagementZoneDimensionalRule) []ManagementZoneDimensionalRuleCondition { return v.Conditions }).(ManagementZoneDimensionalRuleConditionArrayOutput) } -func (o ManagementZoneRuleConditionBitnessOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionBitness) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +func (o ManagementZoneDimensionalRuleOutput) Enabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ManagementZoneDimensionalRule) *bool { return v.Enabled }).(pulumi.BoolPtrOutput) } -func (o ManagementZoneRuleConditionBitnessOutput) Value() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionBitness) *string { return v.Value }).(pulumi.StringPtrOutput) +func (o ManagementZoneDimensionalRuleOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneDimensionalRule) *string { return v.Unknowns }).(pulumi.StringPtrOutput) } -type ManagementZoneRuleConditionBitnessArrayOutput struct{ *pulumi.OutputState } +type ManagementZoneDimensionalRuleArrayOutput struct{ *pulumi.OutputState } -func (ManagementZoneRuleConditionBitnessArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionBitness)(nil)).Elem() +func (ManagementZoneDimensionalRuleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneDimensionalRule)(nil)).Elem() } -func (o ManagementZoneRuleConditionBitnessArrayOutput) ToManagementZoneRuleConditionBitnessArrayOutput() ManagementZoneRuleConditionBitnessArrayOutput { +func (o ManagementZoneDimensionalRuleArrayOutput) ToManagementZoneDimensionalRuleArrayOutput() ManagementZoneDimensionalRuleArrayOutput { return o } -func (o ManagementZoneRuleConditionBitnessArrayOutput) ToManagementZoneRuleConditionBitnessArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBitnessArrayOutput { +func (o ManagementZoneDimensionalRuleArrayOutput) ToManagementZoneDimensionalRuleArrayOutputWithContext(ctx context.Context) ManagementZoneDimensionalRuleArrayOutput { return o } -func (o ManagementZoneRuleConditionBitnessArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionBitnessOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionBitness { - return vs[0].([]ManagementZoneRuleConditionBitness)[vs[1].(int)] - }).(ManagementZoneRuleConditionBitnessOutput) +func (o ManagementZoneDimensionalRuleArrayOutput) Index(i pulumi.IntInput) ManagementZoneDimensionalRuleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneDimensionalRule { + return vs[0].([]ManagementZoneDimensionalRule)[vs[1].(int)] + }).(ManagementZoneDimensionalRuleOutput) } -type ManagementZoneRuleConditionBitnessComparision struct { - Negate *bool `pulumi:"negate"` - Operator string `pulumi:"operator"` - // Deprecated: The value of the attribute type is implicit, therefore shouldn't get specified - Type *string `pulumi:"type"` +type ManagementZoneDimensionalRuleCondition struct { + Key string `pulumi:"key"` + Match string `pulumi:"match"` + Type string `pulumi:"type"` Unknowns *string `pulumi:"unknowns"` Value *string `pulumi:"value"` } -// ManagementZoneRuleConditionBitnessComparisionInput is an input type that accepts ManagementZoneRuleConditionBitnessComparisionArgs and ManagementZoneRuleConditionBitnessComparisionOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionBitnessComparisionInput` via: +// ManagementZoneDimensionalRuleConditionInput is an input type that accepts ManagementZoneDimensionalRuleConditionArgs and ManagementZoneDimensionalRuleConditionOutput values. +// You can construct a concrete instance of `ManagementZoneDimensionalRuleConditionInput` via: // -// ManagementZoneRuleConditionBitnessComparisionArgs{...} -type ManagementZoneRuleConditionBitnessComparisionInput interface { +// ManagementZoneDimensionalRuleConditionArgs{...} +type ManagementZoneDimensionalRuleConditionInput interface { pulumi.Input - ToManagementZoneRuleConditionBitnessComparisionOutput() ManagementZoneRuleConditionBitnessComparisionOutput - ToManagementZoneRuleConditionBitnessComparisionOutputWithContext(context.Context) ManagementZoneRuleConditionBitnessComparisionOutput + ToManagementZoneDimensionalRuleConditionOutput() ManagementZoneDimensionalRuleConditionOutput + ToManagementZoneDimensionalRuleConditionOutputWithContext(context.Context) ManagementZoneDimensionalRuleConditionOutput } -type ManagementZoneRuleConditionBitnessComparisionArgs struct { - Negate pulumi.BoolPtrInput `pulumi:"negate"` - Operator pulumi.StringInput `pulumi:"operator"` - // Deprecated: The value of the attribute type is implicit, therefore shouldn't get specified - Type pulumi.StringPtrInput `pulumi:"type"` +type ManagementZoneDimensionalRuleConditionArgs struct { + Key pulumi.StringInput `pulumi:"key"` + Match pulumi.StringInput `pulumi:"match"` + Type pulumi.StringInput `pulumi:"type"` Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` Value pulumi.StringPtrInput `pulumi:"value"` } -func (ManagementZoneRuleConditionBitnessComparisionArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionBitnessComparision)(nil)).Elem() +func (ManagementZoneDimensionalRuleConditionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneDimensionalRuleCondition)(nil)).Elem() } -func (i ManagementZoneRuleConditionBitnessComparisionArgs) ToManagementZoneRuleConditionBitnessComparisionOutput() ManagementZoneRuleConditionBitnessComparisionOutput { - return i.ToManagementZoneRuleConditionBitnessComparisionOutputWithContext(context.Background()) +func (i ManagementZoneDimensionalRuleConditionArgs) ToManagementZoneDimensionalRuleConditionOutput() ManagementZoneDimensionalRuleConditionOutput { + return i.ToManagementZoneDimensionalRuleConditionOutputWithContext(context.Background()) } -func (i ManagementZoneRuleConditionBitnessComparisionArgs) ToManagementZoneRuleConditionBitnessComparisionOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBitnessComparisionOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionBitnessComparisionOutput) +func (i ManagementZoneDimensionalRuleConditionArgs) ToManagementZoneDimensionalRuleConditionOutputWithContext(ctx context.Context) ManagementZoneDimensionalRuleConditionOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneDimensionalRuleConditionOutput) } -// ManagementZoneRuleConditionBitnessComparisionArrayInput is an input type that accepts ManagementZoneRuleConditionBitnessComparisionArray and ManagementZoneRuleConditionBitnessComparisionArrayOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionBitnessComparisionArrayInput` via: +// ManagementZoneDimensionalRuleConditionArrayInput is an input type that accepts ManagementZoneDimensionalRuleConditionArray and ManagementZoneDimensionalRuleConditionArrayOutput values. +// You can construct a concrete instance of `ManagementZoneDimensionalRuleConditionArrayInput` via: // -// ManagementZoneRuleConditionBitnessComparisionArray{ ManagementZoneRuleConditionBitnessComparisionArgs{...} } -type ManagementZoneRuleConditionBitnessComparisionArrayInput interface { +// ManagementZoneDimensionalRuleConditionArray{ ManagementZoneDimensionalRuleConditionArgs{...} } +type ManagementZoneDimensionalRuleConditionArrayInput interface { pulumi.Input - ToManagementZoneRuleConditionBitnessComparisionArrayOutput() ManagementZoneRuleConditionBitnessComparisionArrayOutput - ToManagementZoneRuleConditionBitnessComparisionArrayOutputWithContext(context.Context) ManagementZoneRuleConditionBitnessComparisionArrayOutput + ToManagementZoneDimensionalRuleConditionArrayOutput() ManagementZoneDimensionalRuleConditionArrayOutput + ToManagementZoneDimensionalRuleConditionArrayOutputWithContext(context.Context) ManagementZoneDimensionalRuleConditionArrayOutput } -type ManagementZoneRuleConditionBitnessComparisionArray []ManagementZoneRuleConditionBitnessComparisionInput +type ManagementZoneDimensionalRuleConditionArray []ManagementZoneDimensionalRuleConditionInput -func (ManagementZoneRuleConditionBitnessComparisionArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionBitnessComparision)(nil)).Elem() +func (ManagementZoneDimensionalRuleConditionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneDimensionalRuleCondition)(nil)).Elem() } -func (i ManagementZoneRuleConditionBitnessComparisionArray) ToManagementZoneRuleConditionBitnessComparisionArrayOutput() ManagementZoneRuleConditionBitnessComparisionArrayOutput { - return i.ToManagementZoneRuleConditionBitnessComparisionArrayOutputWithContext(context.Background()) +func (i ManagementZoneDimensionalRuleConditionArray) ToManagementZoneDimensionalRuleConditionArrayOutput() ManagementZoneDimensionalRuleConditionArrayOutput { + return i.ToManagementZoneDimensionalRuleConditionArrayOutputWithContext(context.Background()) } -func (i ManagementZoneRuleConditionBitnessComparisionArray) ToManagementZoneRuleConditionBitnessComparisionArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBitnessComparisionArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionBitnessComparisionArrayOutput) +func (i ManagementZoneDimensionalRuleConditionArray) ToManagementZoneDimensionalRuleConditionArrayOutputWithContext(ctx context.Context) ManagementZoneDimensionalRuleConditionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneDimensionalRuleConditionArrayOutput) } -type ManagementZoneRuleConditionBitnessComparisionOutput struct{ *pulumi.OutputState } +type ManagementZoneDimensionalRuleConditionOutput struct{ *pulumi.OutputState } -func (ManagementZoneRuleConditionBitnessComparisionOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionBitnessComparision)(nil)).Elem() +func (ManagementZoneDimensionalRuleConditionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneDimensionalRuleCondition)(nil)).Elem() } -func (o ManagementZoneRuleConditionBitnessComparisionOutput) ToManagementZoneRuleConditionBitnessComparisionOutput() ManagementZoneRuleConditionBitnessComparisionOutput { +func (o ManagementZoneDimensionalRuleConditionOutput) ToManagementZoneDimensionalRuleConditionOutput() ManagementZoneDimensionalRuleConditionOutput { return o } -func (o ManagementZoneRuleConditionBitnessComparisionOutput) ToManagementZoneRuleConditionBitnessComparisionOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBitnessComparisionOutput { +func (o ManagementZoneDimensionalRuleConditionOutput) ToManagementZoneDimensionalRuleConditionOutputWithContext(ctx context.Context) ManagementZoneDimensionalRuleConditionOutput { return o } -func (o ManagementZoneRuleConditionBitnessComparisionOutput) Negate() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionBitnessComparision) *bool { return v.Negate }).(pulumi.BoolPtrOutput) +func (o ManagementZoneDimensionalRuleConditionOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v ManagementZoneDimensionalRuleCondition) string { return v.Key }).(pulumi.StringOutput) } -func (o ManagementZoneRuleConditionBitnessComparisionOutput) Operator() pulumi.StringOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionBitnessComparision) string { return v.Operator }).(pulumi.StringOutput) +func (o ManagementZoneDimensionalRuleConditionOutput) Match() pulumi.StringOutput { + return o.ApplyT(func(v ManagementZoneDimensionalRuleCondition) string { return v.Match }).(pulumi.StringOutput) } -// Deprecated: The value of the attribute type is implicit, therefore shouldn't get specified -func (o ManagementZoneRuleConditionBitnessComparisionOutput) Type() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionBitnessComparision) *string { return v.Type }).(pulumi.StringPtrOutput) +func (o ManagementZoneDimensionalRuleConditionOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v ManagementZoneDimensionalRuleCondition) string { return v.Type }).(pulumi.StringOutput) } -func (o ManagementZoneRuleConditionBitnessComparisionOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionBitnessComparision) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +func (o ManagementZoneDimensionalRuleConditionOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneDimensionalRuleCondition) *string { return v.Unknowns }).(pulumi.StringPtrOutput) } -func (o ManagementZoneRuleConditionBitnessComparisionOutput) Value() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionBitnessComparision) *string { return v.Value }).(pulumi.StringPtrOutput) +func (o ManagementZoneDimensionalRuleConditionOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneDimensionalRuleCondition) *string { return v.Value }).(pulumi.StringPtrOutput) } -type ManagementZoneRuleConditionBitnessComparisionArrayOutput struct{ *pulumi.OutputState } +type ManagementZoneDimensionalRuleConditionArrayOutput struct{ *pulumi.OutputState } -func (ManagementZoneRuleConditionBitnessComparisionArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionBitnessComparision)(nil)).Elem() +func (ManagementZoneDimensionalRuleConditionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneDimensionalRuleCondition)(nil)).Elem() } -func (o ManagementZoneRuleConditionBitnessComparisionArrayOutput) ToManagementZoneRuleConditionBitnessComparisionArrayOutput() ManagementZoneRuleConditionBitnessComparisionArrayOutput { +func (o ManagementZoneDimensionalRuleConditionArrayOutput) ToManagementZoneDimensionalRuleConditionArrayOutput() ManagementZoneDimensionalRuleConditionArrayOutput { return o } -func (o ManagementZoneRuleConditionBitnessComparisionArrayOutput) ToManagementZoneRuleConditionBitnessComparisionArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBitnessComparisionArrayOutput { +func (o ManagementZoneDimensionalRuleConditionArrayOutput) ToManagementZoneDimensionalRuleConditionArrayOutputWithContext(ctx context.Context) ManagementZoneDimensionalRuleConditionArrayOutput { return o } -func (o ManagementZoneRuleConditionBitnessComparisionArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionBitnessComparisionOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionBitnessComparision { - return vs[0].([]ManagementZoneRuleConditionBitnessComparision)[vs[1].(int)] - }).(ManagementZoneRuleConditionBitnessComparisionOutput) +func (o ManagementZoneDimensionalRuleConditionArrayOutput) Index(i pulumi.IntInput) ManagementZoneDimensionalRuleConditionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneDimensionalRuleCondition { + return vs[0].([]ManagementZoneDimensionalRuleCondition)[vs[1].(int)] + }).(ManagementZoneDimensionalRuleConditionOutput) } -type ManagementZoneRuleConditionCloudType struct { - Negate *bool `pulumi:"negate"` - Operator string `pulumi:"operator"` +type ManagementZoneEntitySelectorBasedRule struct { + Enabled *bool `pulumi:"enabled"` + Selector *string `pulumi:"selector"` Unknowns *string `pulumi:"unknowns"` - Value *string `pulumi:"value"` } -// ManagementZoneRuleConditionCloudTypeInput is an input type that accepts ManagementZoneRuleConditionCloudTypeArgs and ManagementZoneRuleConditionCloudTypeOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionCloudTypeInput` via: +// ManagementZoneEntitySelectorBasedRuleInput is an input type that accepts ManagementZoneEntitySelectorBasedRuleArgs and ManagementZoneEntitySelectorBasedRuleOutput values. +// You can construct a concrete instance of `ManagementZoneEntitySelectorBasedRuleInput` via: // -// ManagementZoneRuleConditionCloudTypeArgs{...} -type ManagementZoneRuleConditionCloudTypeInput interface { +// ManagementZoneEntitySelectorBasedRuleArgs{...} +type ManagementZoneEntitySelectorBasedRuleInput interface { pulumi.Input - ToManagementZoneRuleConditionCloudTypeOutput() ManagementZoneRuleConditionCloudTypeOutput - ToManagementZoneRuleConditionCloudTypeOutputWithContext(context.Context) ManagementZoneRuleConditionCloudTypeOutput + ToManagementZoneEntitySelectorBasedRuleOutput() ManagementZoneEntitySelectorBasedRuleOutput + ToManagementZoneEntitySelectorBasedRuleOutputWithContext(context.Context) ManagementZoneEntitySelectorBasedRuleOutput } -type ManagementZoneRuleConditionCloudTypeArgs struct { - Negate pulumi.BoolPtrInput `pulumi:"negate"` - Operator pulumi.StringInput `pulumi:"operator"` +type ManagementZoneEntitySelectorBasedRuleArgs struct { + Enabled pulumi.BoolPtrInput `pulumi:"enabled"` + Selector pulumi.StringPtrInput `pulumi:"selector"` Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` - Value pulumi.StringPtrInput `pulumi:"value"` } -func (ManagementZoneRuleConditionCloudTypeArgs) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionCloudType)(nil)).Elem() +func (ManagementZoneEntitySelectorBasedRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneEntitySelectorBasedRule)(nil)).Elem() } -func (i ManagementZoneRuleConditionCloudTypeArgs) ToManagementZoneRuleConditionCloudTypeOutput() ManagementZoneRuleConditionCloudTypeOutput { - return i.ToManagementZoneRuleConditionCloudTypeOutputWithContext(context.Background()) +func (i ManagementZoneEntitySelectorBasedRuleArgs) ToManagementZoneEntitySelectorBasedRuleOutput() ManagementZoneEntitySelectorBasedRuleOutput { + return i.ToManagementZoneEntitySelectorBasedRuleOutputWithContext(context.Background()) } -func (i ManagementZoneRuleConditionCloudTypeArgs) ToManagementZoneRuleConditionCloudTypeOutputWithContext(ctx context.Context) ManagementZoneRuleConditionCloudTypeOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionCloudTypeOutput) +func (i ManagementZoneEntitySelectorBasedRuleArgs) ToManagementZoneEntitySelectorBasedRuleOutputWithContext(ctx context.Context) ManagementZoneEntitySelectorBasedRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneEntitySelectorBasedRuleOutput) } -// ManagementZoneRuleConditionCloudTypeArrayInput is an input type that accepts ManagementZoneRuleConditionCloudTypeArray and ManagementZoneRuleConditionCloudTypeArrayOutput values. -// You can construct a concrete instance of `ManagementZoneRuleConditionCloudTypeArrayInput` via: +// ManagementZoneEntitySelectorBasedRuleArrayInput is an input type that accepts ManagementZoneEntitySelectorBasedRuleArray and ManagementZoneEntitySelectorBasedRuleArrayOutput values. +// You can construct a concrete instance of `ManagementZoneEntitySelectorBasedRuleArrayInput` via: // -// ManagementZoneRuleConditionCloudTypeArray{ ManagementZoneRuleConditionCloudTypeArgs{...} } -type ManagementZoneRuleConditionCloudTypeArrayInput interface { +// ManagementZoneEntitySelectorBasedRuleArray{ ManagementZoneEntitySelectorBasedRuleArgs{...} } +type ManagementZoneEntitySelectorBasedRuleArrayInput interface { pulumi.Input - ToManagementZoneRuleConditionCloudTypeArrayOutput() ManagementZoneRuleConditionCloudTypeArrayOutput - ToManagementZoneRuleConditionCloudTypeArrayOutputWithContext(context.Context) ManagementZoneRuleConditionCloudTypeArrayOutput + ToManagementZoneEntitySelectorBasedRuleArrayOutput() ManagementZoneEntitySelectorBasedRuleArrayOutput + ToManagementZoneEntitySelectorBasedRuleArrayOutputWithContext(context.Context) ManagementZoneEntitySelectorBasedRuleArrayOutput } -type ManagementZoneRuleConditionCloudTypeArray []ManagementZoneRuleConditionCloudTypeInput +type ManagementZoneEntitySelectorBasedRuleArray []ManagementZoneEntitySelectorBasedRuleInput -func (ManagementZoneRuleConditionCloudTypeArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionCloudType)(nil)).Elem() +func (ManagementZoneEntitySelectorBasedRuleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneEntitySelectorBasedRule)(nil)).Elem() } -func (i ManagementZoneRuleConditionCloudTypeArray) ToManagementZoneRuleConditionCloudTypeArrayOutput() ManagementZoneRuleConditionCloudTypeArrayOutput { - return i.ToManagementZoneRuleConditionCloudTypeArrayOutputWithContext(context.Background()) +func (i ManagementZoneEntitySelectorBasedRuleArray) ToManagementZoneEntitySelectorBasedRuleArrayOutput() ManagementZoneEntitySelectorBasedRuleArrayOutput { + return i.ToManagementZoneEntitySelectorBasedRuleArrayOutputWithContext(context.Background()) } -func (i ManagementZoneRuleConditionCloudTypeArray) ToManagementZoneRuleConditionCloudTypeArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionCloudTypeArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionCloudTypeArrayOutput) +func (i ManagementZoneEntitySelectorBasedRuleArray) ToManagementZoneEntitySelectorBasedRuleArrayOutputWithContext(ctx context.Context) ManagementZoneEntitySelectorBasedRuleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneEntitySelectorBasedRuleArrayOutput) } -type ManagementZoneRuleConditionCloudTypeOutput struct{ *pulumi.OutputState } +type ManagementZoneEntitySelectorBasedRuleOutput struct{ *pulumi.OutputState } -func (ManagementZoneRuleConditionCloudTypeOutput) ElementType() reflect.Type { - return reflect.TypeOf((*ManagementZoneRuleConditionCloudType)(nil)).Elem() +func (ManagementZoneEntitySelectorBasedRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneEntitySelectorBasedRule)(nil)).Elem() } -func (o ManagementZoneRuleConditionCloudTypeOutput) ToManagementZoneRuleConditionCloudTypeOutput() ManagementZoneRuleConditionCloudTypeOutput { +func (o ManagementZoneEntitySelectorBasedRuleOutput) ToManagementZoneEntitySelectorBasedRuleOutput() ManagementZoneEntitySelectorBasedRuleOutput { return o } -func (o ManagementZoneRuleConditionCloudTypeOutput) ToManagementZoneRuleConditionCloudTypeOutputWithContext(ctx context.Context) ManagementZoneRuleConditionCloudTypeOutput { +func (o ManagementZoneEntitySelectorBasedRuleOutput) ToManagementZoneEntitySelectorBasedRuleOutputWithContext(ctx context.Context) ManagementZoneEntitySelectorBasedRuleOutput { return o } -func (o ManagementZoneRuleConditionCloudTypeOutput) Negate() pulumi.BoolPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionCloudType) *bool { return v.Negate }).(pulumi.BoolPtrOutput) -} - -func (o ManagementZoneRuleConditionCloudTypeOutput) Operator() pulumi.StringOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionCloudType) string { return v.Operator }).(pulumi.StringOutput) +func (o ManagementZoneEntitySelectorBasedRuleOutput) Enabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ManagementZoneEntitySelectorBasedRule) *bool { return v.Enabled }).(pulumi.BoolPtrOutput) } -func (o ManagementZoneRuleConditionCloudTypeOutput) Unknowns() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionCloudType) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +func (o ManagementZoneEntitySelectorBasedRuleOutput) Selector() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneEntitySelectorBasedRule) *string { return v.Selector }).(pulumi.StringPtrOutput) } -func (o ManagementZoneRuleConditionCloudTypeOutput) Value() pulumi.StringPtrOutput { - return o.ApplyT(func(v ManagementZoneRuleConditionCloudType) *string { return v.Value }).(pulumi.StringPtrOutput) +func (o ManagementZoneEntitySelectorBasedRuleOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneEntitySelectorBasedRule) *string { return v.Unknowns }).(pulumi.StringPtrOutput) } -type ManagementZoneRuleConditionCloudTypeArrayOutput struct{ *pulumi.OutputState } +type ManagementZoneEntitySelectorBasedRuleArrayOutput struct{ *pulumi.OutputState } -func (ManagementZoneRuleConditionCloudTypeArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]ManagementZoneRuleConditionCloudType)(nil)).Elem() +func (ManagementZoneEntitySelectorBasedRuleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneEntitySelectorBasedRule)(nil)).Elem() } -func (o ManagementZoneRuleConditionCloudTypeArrayOutput) ToManagementZoneRuleConditionCloudTypeArrayOutput() ManagementZoneRuleConditionCloudTypeArrayOutput { +func (o ManagementZoneEntitySelectorBasedRuleArrayOutput) ToManagementZoneEntitySelectorBasedRuleArrayOutput() ManagementZoneEntitySelectorBasedRuleArrayOutput { return o } -func (o ManagementZoneRuleConditionCloudTypeArrayOutput) ToManagementZoneRuleConditionCloudTypeArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionCloudTypeArrayOutput { +func (o ManagementZoneEntitySelectorBasedRuleArrayOutput) ToManagementZoneEntitySelectorBasedRuleArrayOutputWithContext(ctx context.Context) ManagementZoneEntitySelectorBasedRuleArrayOutput { return o } -func (o ManagementZoneRuleConditionCloudTypeArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionCloudTypeOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionCloudType { - return vs[0].([]ManagementZoneRuleConditionCloudType)[vs[1].(int)] - }).(ManagementZoneRuleConditionCloudTypeOutput) +func (o ManagementZoneEntitySelectorBasedRuleArrayOutput) Index(i pulumi.IntInput) ManagementZoneEntitySelectorBasedRuleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneEntitySelectorBasedRule { + return vs[0].([]ManagementZoneEntitySelectorBasedRule)[vs[1].(int)] + }).(ManagementZoneEntitySelectorBasedRuleOutput) } func init() { @@ -69740,6 +69794,34 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*ImsBridgesQueueManagerQueueManagerArrayInput)(nil)).Elem(), ImsBridgesQueueManagerQueueManagerArray{}) pulumi.RegisterInputType(reflect.TypeOf((*K8sCredentialsEventsFieldSelectorInput)(nil)).Elem(), K8sCredentialsEventsFieldSelectorArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*K8sCredentialsEventsFieldSelectorArrayInput)(nil)).Elem(), K8sCredentialsEventsFieldSelectorArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceFilterInput)(nil)).Elem(), MaintenanceFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceFilterArrayInput)(nil)).Elem(), MaintenanceFilterArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceFilterFilterInput)(nil)).Elem(), MaintenanceFilterFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceFilterFilterArrayInput)(nil)).Elem(), MaintenanceFilterFilterArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceGeneralPropertiesInput)(nil)).Elem(), MaintenanceGeneralPropertiesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceGeneralPropertiesPtrInput)(nil)).Elem(), MaintenanceGeneralPropertiesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleInput)(nil)).Elem(), MaintenanceScheduleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceSchedulePtrInput)(nil)).Elem(), MaintenanceScheduleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleDailyRecurrenceInput)(nil)).Elem(), MaintenanceScheduleDailyRecurrenceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleDailyRecurrencePtrInput)(nil)).Elem(), MaintenanceScheduleDailyRecurrenceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleDailyRecurrenceRecurrenceRangeInput)(nil)).Elem(), MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrInput)(nil)).Elem(), MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleDailyRecurrenceTimeWindowInput)(nil)).Elem(), MaintenanceScheduleDailyRecurrenceTimeWindowArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleDailyRecurrenceTimeWindowPtrInput)(nil)).Elem(), MaintenanceScheduleDailyRecurrenceTimeWindowArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleMonthlyRecurrenceInput)(nil)).Elem(), MaintenanceScheduleMonthlyRecurrenceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleMonthlyRecurrencePtrInput)(nil)).Elem(), MaintenanceScheduleMonthlyRecurrenceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeInput)(nil)).Elem(), MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrInput)(nil)).Elem(), MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleMonthlyRecurrenceTimeWindowInput)(nil)).Elem(), MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrInput)(nil)).Elem(), MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleOnceRecurrenceInput)(nil)).Elem(), MaintenanceScheduleOnceRecurrenceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleOnceRecurrencePtrInput)(nil)).Elem(), MaintenanceScheduleOnceRecurrenceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleWeeklyRecurrenceInput)(nil)).Elem(), MaintenanceScheduleWeeklyRecurrenceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleWeeklyRecurrencePtrInput)(nil)).Elem(), MaintenanceScheduleWeeklyRecurrenceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeInput)(nil)).Elem(), MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrInput)(nil)).Elem(), MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleWeeklyRecurrenceTimeWindowInput)(nil)).Elem(), MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrInput)(nil)).Elem(), MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceWindowMetadataInput)(nil)).Elem(), MaintenanceWindowMetadataArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceWindowMetadataPtrInput)(nil)).Elem(), MaintenanceWindowMetadataArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*MaintenanceWindowScheduleInput)(nil)).Elem(), MaintenanceWindowScheduleArgs{}) @@ -69758,34 +69840,6 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneDimensionalRuleConditionArrayInput)(nil)).Elem(), ManagementZoneDimensionalRuleConditionArray{}) pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneEntitySelectorBasedRuleInput)(nil)).Elem(), ManagementZoneEntitySelectorBasedRuleArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneEntitySelectorBasedRuleArrayInput)(nil)).Elem(), ManagementZoneEntitySelectorBasedRuleArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneMetadataInput)(nil)).Elem(), ManagementZoneMetadataArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneMetadataPtrInput)(nil)).Elem(), ManagementZoneMetadataArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleInput)(nil)).Elem(), ManagementZoneRuleArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleArrayInput)(nil)).Elem(), ManagementZoneRuleArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionInput)(nil)).Elem(), ManagementZoneRuleConditionArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionArrayInput)(nil)).Elem(), ManagementZoneRuleConditionArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionApplicationTypeInput)(nil)).Elem(), ManagementZoneRuleConditionApplicationTypeArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionApplicationTypeArrayInput)(nil)).Elem(), ManagementZoneRuleConditionApplicationTypeArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionApplicationTypeComparisonInput)(nil)).Elem(), ManagementZoneRuleConditionApplicationTypeComparisonArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionApplicationTypeComparisonArrayInput)(nil)).Elem(), ManagementZoneRuleConditionApplicationTypeComparisonArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionAzureComputeModeInput)(nil)).Elem(), ManagementZoneRuleConditionAzureComputeModeArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionAzureComputeModeArrayInput)(nil)).Elem(), ManagementZoneRuleConditionAzureComputeModeArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionAzureComputeModeComparisonInput)(nil)).Elem(), ManagementZoneRuleConditionAzureComputeModeComparisonArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionAzureComputeModeComparisonArrayInput)(nil)).Elem(), ManagementZoneRuleConditionAzureComputeModeComparisonArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionAzureSkuComparisionInput)(nil)).Elem(), ManagementZoneRuleConditionAzureSkuComparisionArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionAzureSkuComparisionArrayInput)(nil)).Elem(), ManagementZoneRuleConditionAzureSkuComparisionArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionAzureSkusInput)(nil)).Elem(), ManagementZoneRuleConditionAzureSkusArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionAzureSkusArrayInput)(nil)).Elem(), ManagementZoneRuleConditionAzureSkusArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionBaseComparisonBasicInput)(nil)).Elem(), ManagementZoneRuleConditionBaseComparisonBasicArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionBaseComparisonBasicArrayInput)(nil)).Elem(), ManagementZoneRuleConditionBaseComparisonBasicArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionBaseConditionKeyInput)(nil)).Elem(), ManagementZoneRuleConditionBaseConditionKeyArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionBaseConditionKeyArrayInput)(nil)).Elem(), ManagementZoneRuleConditionBaseConditionKeyArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionBitnessInput)(nil)).Elem(), ManagementZoneRuleConditionBitnessArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionBitnessArrayInput)(nil)).Elem(), ManagementZoneRuleConditionBitnessArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionBitnessComparisionInput)(nil)).Elem(), ManagementZoneRuleConditionBitnessComparisionArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionBitnessComparisionArrayInput)(nil)).Elem(), ManagementZoneRuleConditionBitnessComparisionArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionCloudTypeInput)(nil)).Elem(), ManagementZoneRuleConditionCloudTypeArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionCloudTypeArrayInput)(nil)).Elem(), ManagementZoneRuleConditionCloudTypeArray{}) pulumi.RegisterOutputType(AlertingFiltersOutput{}) pulumi.RegisterOutputType(AlertingFiltersPtrOutput{}) pulumi.RegisterOutputType(AlertingFiltersFilterOutput{}) @@ -70723,6 +70777,34 @@ func init() { pulumi.RegisterOutputType(ImsBridgesQueueManagerQueueManagerArrayOutput{}) pulumi.RegisterOutputType(K8sCredentialsEventsFieldSelectorOutput{}) pulumi.RegisterOutputType(K8sCredentialsEventsFieldSelectorArrayOutput{}) + pulumi.RegisterOutputType(MaintenanceFilterOutput{}) + pulumi.RegisterOutputType(MaintenanceFilterArrayOutput{}) + pulumi.RegisterOutputType(MaintenanceFilterFilterOutput{}) + pulumi.RegisterOutputType(MaintenanceFilterFilterArrayOutput{}) + pulumi.RegisterOutputType(MaintenanceGeneralPropertiesOutput{}) + pulumi.RegisterOutputType(MaintenanceGeneralPropertiesPtrOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleOutput{}) + pulumi.RegisterOutputType(MaintenanceSchedulePtrOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleDailyRecurrenceOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleDailyRecurrencePtrOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleDailyRecurrenceRecurrenceRangeOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleDailyRecurrenceRecurrenceRangePtrOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleDailyRecurrenceTimeWindowOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleDailyRecurrenceTimeWindowPtrOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleMonthlyRecurrenceOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleMonthlyRecurrencePtrOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleMonthlyRecurrenceRecurrenceRangePtrOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleMonthlyRecurrenceTimeWindowOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleMonthlyRecurrenceTimeWindowPtrOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleOnceRecurrenceOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleOnceRecurrencePtrOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleWeeklyRecurrenceOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleWeeklyRecurrencePtrOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleWeeklyRecurrenceRecurrenceRangePtrOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleWeeklyRecurrenceTimeWindowOutput{}) + pulumi.RegisterOutputType(MaintenanceScheduleWeeklyRecurrenceTimeWindowPtrOutput{}) pulumi.RegisterOutputType(MaintenanceWindowMetadataOutput{}) pulumi.RegisterOutputType(MaintenanceWindowMetadataPtrOutput{}) pulumi.RegisterOutputType(MaintenanceWindowScheduleOutput{}) @@ -70741,32 +70823,4 @@ func init() { pulumi.RegisterOutputType(ManagementZoneDimensionalRuleConditionArrayOutput{}) pulumi.RegisterOutputType(ManagementZoneEntitySelectorBasedRuleOutput{}) pulumi.RegisterOutputType(ManagementZoneEntitySelectorBasedRuleArrayOutput{}) - pulumi.RegisterOutputType(ManagementZoneMetadataOutput{}) - pulumi.RegisterOutputType(ManagementZoneMetadataPtrOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleArrayOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionArrayOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionApplicationTypeOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionApplicationTypeArrayOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionApplicationTypeComparisonOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionAzureComputeModeOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionAzureComputeModeArrayOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionAzureComputeModeComparisonOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionAzureSkuComparisionOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionAzureSkuComparisionArrayOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionAzureSkusOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionAzureSkusArrayOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionBaseComparisonBasicOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionBaseComparisonBasicArrayOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionBaseConditionKeyOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionBaseConditionKeyArrayOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionBitnessOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionBitnessArrayOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionBitnessComparisionOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionBitnessComparisionArrayOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionCloudTypeOutput{}) - pulumi.RegisterOutputType(ManagementZoneRuleConditionCloudTypeArrayOutput{}) } diff --git a/sdk/go/dynatrace/pulumiTypes1.go b/sdk/go/dynatrace/pulumiTypes1.go index 21ab2e48..4c29c88d 100644 --- a/sdk/go/dynatrace/pulumiTypes1.go +++ b/sdk/go/dynatrace/pulumiTypes1.go @@ -10,6 +10,2194 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +type ManagementZoneMetadata struct { + ClusterVersion *string `pulumi:"clusterVersion"` + ConfigurationVersions []int `pulumi:"configurationVersions"` + CurrentConfigurationVersions []string `pulumi:"currentConfigurationVersions"` +} + +// ManagementZoneMetadataInput is an input type that accepts ManagementZoneMetadataArgs and ManagementZoneMetadataOutput values. +// You can construct a concrete instance of `ManagementZoneMetadataInput` via: +// +// ManagementZoneMetadataArgs{...} +type ManagementZoneMetadataInput interface { + pulumi.Input + + ToManagementZoneMetadataOutput() ManagementZoneMetadataOutput + ToManagementZoneMetadataOutputWithContext(context.Context) ManagementZoneMetadataOutput +} + +type ManagementZoneMetadataArgs struct { + ClusterVersion pulumi.StringPtrInput `pulumi:"clusterVersion"` + ConfigurationVersions pulumi.IntArrayInput `pulumi:"configurationVersions"` + CurrentConfigurationVersions pulumi.StringArrayInput `pulumi:"currentConfigurationVersions"` +} + +func (ManagementZoneMetadataArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneMetadata)(nil)).Elem() +} + +func (i ManagementZoneMetadataArgs) ToManagementZoneMetadataOutput() ManagementZoneMetadataOutput { + return i.ToManagementZoneMetadataOutputWithContext(context.Background()) +} + +func (i ManagementZoneMetadataArgs) ToManagementZoneMetadataOutputWithContext(ctx context.Context) ManagementZoneMetadataOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneMetadataOutput) +} + +func (i ManagementZoneMetadataArgs) ToManagementZoneMetadataPtrOutput() ManagementZoneMetadataPtrOutput { + return i.ToManagementZoneMetadataPtrOutputWithContext(context.Background()) +} + +func (i ManagementZoneMetadataArgs) ToManagementZoneMetadataPtrOutputWithContext(ctx context.Context) ManagementZoneMetadataPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneMetadataOutput).ToManagementZoneMetadataPtrOutputWithContext(ctx) +} + +// ManagementZoneMetadataPtrInput is an input type that accepts ManagementZoneMetadataArgs, ManagementZoneMetadataPtr and ManagementZoneMetadataPtrOutput values. +// You can construct a concrete instance of `ManagementZoneMetadataPtrInput` via: +// +// ManagementZoneMetadataArgs{...} +// +// or: +// +// nil +type ManagementZoneMetadataPtrInput interface { + pulumi.Input + + ToManagementZoneMetadataPtrOutput() ManagementZoneMetadataPtrOutput + ToManagementZoneMetadataPtrOutputWithContext(context.Context) ManagementZoneMetadataPtrOutput +} + +type managementZoneMetadataPtrType ManagementZoneMetadataArgs + +func ManagementZoneMetadataPtr(v *ManagementZoneMetadataArgs) ManagementZoneMetadataPtrInput { + return (*managementZoneMetadataPtrType)(v) +} + +func (*managementZoneMetadataPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ManagementZoneMetadata)(nil)).Elem() +} + +func (i *managementZoneMetadataPtrType) ToManagementZoneMetadataPtrOutput() ManagementZoneMetadataPtrOutput { + return i.ToManagementZoneMetadataPtrOutputWithContext(context.Background()) +} + +func (i *managementZoneMetadataPtrType) ToManagementZoneMetadataPtrOutputWithContext(ctx context.Context) ManagementZoneMetadataPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneMetadataPtrOutput) +} + +type ManagementZoneMetadataOutput struct{ *pulumi.OutputState } + +func (ManagementZoneMetadataOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneMetadata)(nil)).Elem() +} + +func (o ManagementZoneMetadataOutput) ToManagementZoneMetadataOutput() ManagementZoneMetadataOutput { + return o +} + +func (o ManagementZoneMetadataOutput) ToManagementZoneMetadataOutputWithContext(ctx context.Context) ManagementZoneMetadataOutput { + return o +} + +func (o ManagementZoneMetadataOutput) ToManagementZoneMetadataPtrOutput() ManagementZoneMetadataPtrOutput { + return o.ToManagementZoneMetadataPtrOutputWithContext(context.Background()) +} + +func (o ManagementZoneMetadataOutput) ToManagementZoneMetadataPtrOutputWithContext(ctx context.Context) ManagementZoneMetadataPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ManagementZoneMetadata) *ManagementZoneMetadata { + return &v + }).(ManagementZoneMetadataPtrOutput) +} + +func (o ManagementZoneMetadataOutput) ClusterVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneMetadata) *string { return v.ClusterVersion }).(pulumi.StringPtrOutput) +} + +func (o ManagementZoneMetadataOutput) ConfigurationVersions() pulumi.IntArrayOutput { + return o.ApplyT(func(v ManagementZoneMetadata) []int { return v.ConfigurationVersions }).(pulumi.IntArrayOutput) +} + +func (o ManagementZoneMetadataOutput) CurrentConfigurationVersions() pulumi.StringArrayOutput { + return o.ApplyT(func(v ManagementZoneMetadata) []string { return v.CurrentConfigurationVersions }).(pulumi.StringArrayOutput) +} + +type ManagementZoneMetadataPtrOutput struct{ *pulumi.OutputState } + +func (ManagementZoneMetadataPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ManagementZoneMetadata)(nil)).Elem() +} + +func (o ManagementZoneMetadataPtrOutput) ToManagementZoneMetadataPtrOutput() ManagementZoneMetadataPtrOutput { + return o +} + +func (o ManagementZoneMetadataPtrOutput) ToManagementZoneMetadataPtrOutputWithContext(ctx context.Context) ManagementZoneMetadataPtrOutput { + return o +} + +func (o ManagementZoneMetadataPtrOutput) Elem() ManagementZoneMetadataOutput { + return o.ApplyT(func(v *ManagementZoneMetadata) ManagementZoneMetadata { + if v != nil { + return *v + } + var ret ManagementZoneMetadata + return ret + }).(ManagementZoneMetadataOutput) +} + +func (o ManagementZoneMetadataPtrOutput) ClusterVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ManagementZoneMetadata) *string { + if v == nil { + return nil + } + return v.ClusterVersion + }).(pulumi.StringPtrOutput) +} + +func (o ManagementZoneMetadataPtrOutput) ConfigurationVersions() pulumi.IntArrayOutput { + return o.ApplyT(func(v *ManagementZoneMetadata) []int { + if v == nil { + return nil + } + return v.ConfigurationVersions + }).(pulumi.IntArrayOutput) +} + +func (o ManagementZoneMetadataPtrOutput) CurrentConfigurationVersions() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ManagementZoneMetadata) []string { + if v == nil { + return nil + } + return v.CurrentConfigurationVersions + }).(pulumi.StringArrayOutput) +} + +type ManagementZoneRule struct { + Conditions []ManagementZoneRuleCondition `pulumi:"conditions"` + Enabled *bool `pulumi:"enabled"` + PropagationTypes []string `pulumi:"propagationTypes"` + Type string `pulumi:"type"` + Unknowns *string `pulumi:"unknowns"` +} + +// ManagementZoneRuleInput is an input type that accepts ManagementZoneRuleArgs and ManagementZoneRuleOutput values. +// You can construct a concrete instance of `ManagementZoneRuleInput` via: +// +// ManagementZoneRuleArgs{...} +type ManagementZoneRuleInput interface { + pulumi.Input + + ToManagementZoneRuleOutput() ManagementZoneRuleOutput + ToManagementZoneRuleOutputWithContext(context.Context) ManagementZoneRuleOutput +} + +type ManagementZoneRuleArgs struct { + Conditions ManagementZoneRuleConditionArrayInput `pulumi:"conditions"` + Enabled pulumi.BoolPtrInput `pulumi:"enabled"` + PropagationTypes pulumi.StringArrayInput `pulumi:"propagationTypes"` + Type pulumi.StringInput `pulumi:"type"` + Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` +} + +func (ManagementZoneRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRule)(nil)).Elem() +} + +func (i ManagementZoneRuleArgs) ToManagementZoneRuleOutput() ManagementZoneRuleOutput { + return i.ToManagementZoneRuleOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleArgs) ToManagementZoneRuleOutputWithContext(ctx context.Context) ManagementZoneRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleOutput) +} + +// ManagementZoneRuleArrayInput is an input type that accepts ManagementZoneRuleArray and ManagementZoneRuleArrayOutput values. +// You can construct a concrete instance of `ManagementZoneRuleArrayInput` via: +// +// ManagementZoneRuleArray{ ManagementZoneRuleArgs{...} } +type ManagementZoneRuleArrayInput interface { + pulumi.Input + + ToManagementZoneRuleArrayOutput() ManagementZoneRuleArrayOutput + ToManagementZoneRuleArrayOutputWithContext(context.Context) ManagementZoneRuleArrayOutput +} + +type ManagementZoneRuleArray []ManagementZoneRuleInput + +func (ManagementZoneRuleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRule)(nil)).Elem() +} + +func (i ManagementZoneRuleArray) ToManagementZoneRuleArrayOutput() ManagementZoneRuleArrayOutput { + return i.ToManagementZoneRuleArrayOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleArray) ToManagementZoneRuleArrayOutputWithContext(ctx context.Context) ManagementZoneRuleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleArrayOutput) +} + +type ManagementZoneRuleOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRule)(nil)).Elem() +} + +func (o ManagementZoneRuleOutput) ToManagementZoneRuleOutput() ManagementZoneRuleOutput { + return o +} + +func (o ManagementZoneRuleOutput) ToManagementZoneRuleOutputWithContext(ctx context.Context) ManagementZoneRuleOutput { + return o +} + +func (o ManagementZoneRuleOutput) Conditions() ManagementZoneRuleConditionArrayOutput { + return o.ApplyT(func(v ManagementZoneRule) []ManagementZoneRuleCondition { return v.Conditions }).(ManagementZoneRuleConditionArrayOutput) +} + +func (o ManagementZoneRuleOutput) Enabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ManagementZoneRule) *bool { return v.Enabled }).(pulumi.BoolPtrOutput) +} + +func (o ManagementZoneRuleOutput) PropagationTypes() pulumi.StringArrayOutput { + return o.ApplyT(func(v ManagementZoneRule) []string { return v.PropagationTypes }).(pulumi.StringArrayOutput) +} + +func (o ManagementZoneRuleOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v ManagementZoneRule) string { return v.Type }).(pulumi.StringOutput) +} + +func (o ManagementZoneRuleOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRule) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +} + +type ManagementZoneRuleArrayOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRule)(nil)).Elem() +} + +func (o ManagementZoneRuleArrayOutput) ToManagementZoneRuleArrayOutput() ManagementZoneRuleArrayOutput { + return o +} + +func (o ManagementZoneRuleArrayOutput) ToManagementZoneRuleArrayOutputWithContext(ctx context.Context) ManagementZoneRuleArrayOutput { + return o +} + +func (o ManagementZoneRuleArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRule { + return vs[0].([]ManagementZoneRule)[vs[1].(int)] + }).(ManagementZoneRuleOutput) +} + +type ManagementZoneRuleCondition struct { + // Deprecated: You should use 'application_type' instead of 'application_type_comparison'. This attribute still exists for backwards compatibility. + ApplicationTypeComparisons []ManagementZoneRuleConditionApplicationTypeComparison `pulumi:"applicationTypeComparisons"` + ApplicationTypes []ManagementZoneRuleConditionApplicationType `pulumi:"applicationTypes"` + AzureComputeModeComparisons []ManagementZoneRuleConditionAzureComputeModeComparison `pulumi:"azureComputeModeComparisons"` + // Deprecated: You should use 'azure_compute_mode' instead of 'azure_compute_mode_comparison'. This attribute still exists for backwards compatibility. + AzureComputeModes []ManagementZoneRuleConditionAzureComputeMode `pulumi:"azureComputeModes"` + // Deprecated: You should use 'azure_sku' instead of 'azure_sku_comparision'. This attribute still exists for backwards compatibility. + AzureSkuComparisions []ManagementZoneRuleConditionAzureSkuComparision `pulumi:"azureSkuComparisions"` + AzureSkus []ManagementZoneRuleConditionAzureSkus `pulumi:"azureSkus"` + // Deprecated: You should use 'comparison' instead of 'base_comparison_basic'. This attribute still exists for backwards compatibility. + BaseComparisonBasics []ManagementZoneRuleConditionBaseComparisonBasic `pulumi:"baseComparisonBasics"` + // Deprecated: 'base_condition_key' is deprecated. You should use 'key' + BaseConditionKeys []ManagementZoneRuleConditionBaseConditionKey `pulumi:"baseConditionKeys"` + // Deprecated: You should use 'bitness' instead of 'bitness_comparision'. This attribute still exists for backwards compatibility. + BitnessComparisions []ManagementZoneRuleConditionBitnessComparision `pulumi:"bitnessComparisions"` + Bitnesses []ManagementZoneRuleConditionBitness `pulumi:"bitnesses"` + // Deprecated: You should use 'cloud_type' instead of 'cloud_type_comparison'. This attribute still exists for backwards compatibility. + CloudTypeComparisons []ManagementZoneRuleConditionCloudTypeComparison `pulumi:"cloudTypeComparisons"` + CloudTypes []ManagementZoneRuleConditionCloudType `pulumi:"cloudTypes"` + Comparisons []ManagementZoneRuleConditionComparison `pulumi:"comparisons"` + // Deprecated: You should use 'custom_application_type' instead of 'custom_application_type_comparison'. This attribute still exists for backwards compatibility. + CustomApplicationTypeComparisons []ManagementZoneRuleConditionCustomApplicationTypeComparison `pulumi:"customApplicationTypeComparisons"` + CustomApplicationTypes []ManagementZoneRuleConditionCustomApplicationType `pulumi:"customApplicationTypes"` + // Deprecated: 'custom_host_metadata_condition_key' is deprecated. You should use 'custom_host_metadata' + CustomHostMetadataConditionKeys []ManagementZoneRuleConditionCustomHostMetadataConditionKey `pulumi:"customHostMetadataConditionKeys"` + CustomHostMetadatas []ManagementZoneRuleConditionCustomHostMetadata `pulumi:"customHostMetadatas"` + // Deprecated: 'custom_process_metadata_condition_key' is deprecated. You should use 'custom_process_metadata' + CustomProcessMetadataConditionKeys []ManagementZoneRuleConditionCustomProcessMetadataConditionKey `pulumi:"customProcessMetadataConditionKeys"` + CustomProcessMetadatas []ManagementZoneRuleConditionCustomProcessMetadata `pulumi:"customProcessMetadatas"` + DatabaseTopologies []ManagementZoneRuleConditionDatabaseTopology `pulumi:"databaseTopologies"` + // Deprecated: You should use 'database_topology' instead of 'database_topology_comparison'. This attribute still exists for backwards compatibility. + DatabaseTopologyComparisons []ManagementZoneRuleConditionDatabaseTopologyComparison `pulumi:"databaseTopologyComparisons"` + // Deprecated: You should use 'dcrum_decoder' instead of 'dcrum_decoder_comparison'. This attribute still exists for backwards compatibility. + DcrumDecoderComparisons []ManagementZoneRuleConditionDcrumDecoderComparison `pulumi:"dcrumDecoderComparisons"` + DcrumDecoders []ManagementZoneRuleConditionDcrumDecoder `pulumi:"dcrumDecoders"` + Entities []ManagementZoneRuleConditionEntity `pulumi:"entities"` + // Deprecated: You should use 'entity' instead of 'entity_id_comparison'. This attribute still exists for backwards compatibility. + EntityIdComparisons []ManagementZoneRuleConditionEntityIdComparison `pulumi:"entityIdComparisons"` + HostTeches []ManagementZoneRuleConditionHostTech `pulumi:"hostTeches"` + // Deprecated: `hypervisor_type_comparision` is deprecated. Use `hypervisor` instead + HypervisorTypeComparisions []ManagementZoneRuleConditionHypervisorTypeComparision `pulumi:"hypervisorTypeComparisions"` + Hypervisors []ManagementZoneRuleConditionHypervisor `pulumi:"hypervisors"` + // Deprecated: You should use 'indexed_name' instead of 'indexed_name_comparison'. This attribute still exists for backwards compatibility. + IndexedNameComparisons []ManagementZoneRuleConditionIndexedNameComparison `pulumi:"indexedNameComparisons"` + IndexedNames []ManagementZoneRuleConditionIndexedName `pulumi:"indexedNames"` + // Deprecated: You should use 'indexed_string' instead of 'indexed_string_comparison'. This attribute still exists for backwards compatibility. + IndexedStringComparisons []ManagementZoneRuleConditionIndexedStringComparison `pulumi:"indexedStringComparisons"` + IndexedStrings []ManagementZoneRuleConditionIndexedString `pulumi:"indexedStrings"` + // Deprecated: You should use 'indexed_tag' instead of 'indexed_tag_comparison'. This attribute still exists for backwards compatibility. + IndexedTagComparisons []ManagementZoneRuleConditionIndexedTagComparison `pulumi:"indexedTagComparisons"` + IndexedTags []ManagementZoneRuleConditionIndexedTag `pulumi:"indexedTags"` + // Deprecated: You should use 'integer' instead of 'integer_comparison'. This attribute still exists for backwards compatibility. + IntegerComparisons []ManagementZoneRuleConditionIntegerComparison `pulumi:"integerComparisons"` + Integers []ManagementZoneRuleConditionInteger `pulumi:"integers"` + // Deprecated: You should use 'ipaddress' instead of 'ipaddress_comparison'. This attribute still exists for backwards compatibility. + IpaddressComparisons []ManagementZoneRuleConditionIpaddressComparison `pulumi:"ipaddressComparisons"` + Ipaddresses []ManagementZoneRuleConditionIpaddress `pulumi:"ipaddresses"` + Keys []ManagementZoneRuleConditionKey `pulumi:"keys"` + // Deprecated: You should use 'mobile_platform' instead of 'mobile_platform_comparison'. This attribute still exists for backwards compatibility. + MobilePlatformComparisons []ManagementZoneRuleConditionMobilePlatformComparison `pulumi:"mobilePlatformComparisons"` + MobilePlatforms []ManagementZoneRuleConditionMobilePlatform `pulumi:"mobilePlatforms"` + OsArches []ManagementZoneRuleConditionOsArch `pulumi:"osArches"` + OsTypes []ManagementZoneRuleConditionOsType `pulumi:"osTypes"` + // Deprecated: You should use 'os_arch' instead of 'osarchitecture_comparison'. This attribute still exists for backwards compatibility. + OsarchitectureComparisons []ManagementZoneRuleConditionOsarchitectureComparison `pulumi:"osarchitectureComparisons"` + // Deprecated: You should use 'os_type' instead of 'ostype_comparison'. This attribute still exists for backwards compatibility. + OstypeComparisons []ManagementZoneRuleConditionOstypeComparison `pulumi:"ostypeComparisons"` + // Deprecated: You should use 'paas_type' instead of 'paas_type_comparison'. This attribute still exists for backwards compatibility. + PaasTypeComparisons []ManagementZoneRuleConditionPaasTypeComparison `pulumi:"paasTypeComparisons"` + PaasTypes []ManagementZoneRuleConditionPaasType `pulumi:"paasTypes"` + // Deprecated: 'process_metadata_condition_key' is deprecated. You should use 'process_metadata' + ProcessMetadataConditionKeys []ManagementZoneRuleConditionProcessMetadataConditionKey `pulumi:"processMetadataConditionKeys"` + ProcessMetadatas []ManagementZoneRuleConditionProcessMetadata `pulumi:"processMetadatas"` + ServiceTopologies []ManagementZoneRuleConditionServiceTopology `pulumi:"serviceTopologies"` + // Deprecated: You should use 'service_topology' instead of 'service_topology_comparison'. This attribute still exists for backwards compatibility. + ServiceTopologyComparisons []ManagementZoneRuleConditionServiceTopologyComparison `pulumi:"serviceTopologyComparisons"` + // Deprecated: You should use 'service_type' instead of 'service_type_comparison'. This attribute still exists for backwards compatibility. + ServiceTypeComparisons []ManagementZoneRuleConditionServiceTypeComparison `pulumi:"serviceTypeComparisons"` + ServiceTypes []ManagementZoneRuleConditionServiceType `pulumi:"serviceTypes"` + // Deprecated: You should use 'host_tech' instead of 'simple_host_tech_comparison'. This attribute still exists for backwards compatibility. + SimpleHostTechComparisons []ManagementZoneRuleConditionSimpleHostTechComparison `pulumi:"simpleHostTechComparisons"` + // Deprecated: You should use 'tech' instead of 'simple_tech_comparison'. This attribute still exists for backwards compatibility. + SimpleTechComparisons []ManagementZoneRuleConditionSimpleTechComparison `pulumi:"simpleTechComparisons"` + // Deprecated: You should use 'string' instead of 'string_comparison'. This attribute still exists for backwards compatibility. + StringComparisons []ManagementZoneRuleConditionStringComparison `pulumi:"stringComparisons"` + // Deprecated: 'string_condition_key' is deprecated. You should use 'string_key' + StringConditionKeys []ManagementZoneRuleConditionStringConditionKey `pulumi:"stringConditionKeys"` + StringKeys []ManagementZoneRuleConditionStringKey `pulumi:"stringKeys"` + Strings []ManagementZoneRuleConditionString `pulumi:"strings"` + // Deprecated: You should use 'synthetic_engine' instead of 'synthetic_engine_type_comparison'. This attribute still exists for backwards compatibility. + SyntheticEngineTypeComparisons []ManagementZoneRuleConditionSyntheticEngineTypeComparison `pulumi:"syntheticEngineTypeComparisons"` + SyntheticEngines []ManagementZoneRuleConditionSyntheticEngine `pulumi:"syntheticEngines"` + // Deprecated: You should use 'tag' instead of 'tag_comparison'. This attribute still exists for backwards compatibility. + TagComparisons []ManagementZoneRuleConditionTagComparison `pulumi:"tagComparisons"` + Tags []ManagementZoneRuleConditionTag `pulumi:"tags"` + Teches []ManagementZoneRuleConditionTech `pulumi:"teches"` + Unknowns *string `pulumi:"unknowns"` +} + +// ManagementZoneRuleConditionInput is an input type that accepts ManagementZoneRuleConditionArgs and ManagementZoneRuleConditionOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionInput` via: +// +// ManagementZoneRuleConditionArgs{...} +type ManagementZoneRuleConditionInput interface { + pulumi.Input + + ToManagementZoneRuleConditionOutput() ManagementZoneRuleConditionOutput + ToManagementZoneRuleConditionOutputWithContext(context.Context) ManagementZoneRuleConditionOutput +} + +type ManagementZoneRuleConditionArgs struct { + // Deprecated: You should use 'application_type' instead of 'application_type_comparison'. This attribute still exists for backwards compatibility. + ApplicationTypeComparisons ManagementZoneRuleConditionApplicationTypeComparisonArrayInput `pulumi:"applicationTypeComparisons"` + ApplicationTypes ManagementZoneRuleConditionApplicationTypeArrayInput `pulumi:"applicationTypes"` + AzureComputeModeComparisons ManagementZoneRuleConditionAzureComputeModeComparisonArrayInput `pulumi:"azureComputeModeComparisons"` + // Deprecated: You should use 'azure_compute_mode' instead of 'azure_compute_mode_comparison'. This attribute still exists for backwards compatibility. + AzureComputeModes ManagementZoneRuleConditionAzureComputeModeArrayInput `pulumi:"azureComputeModes"` + // Deprecated: You should use 'azure_sku' instead of 'azure_sku_comparision'. This attribute still exists for backwards compatibility. + AzureSkuComparisions ManagementZoneRuleConditionAzureSkuComparisionArrayInput `pulumi:"azureSkuComparisions"` + AzureSkus ManagementZoneRuleConditionAzureSkusArrayInput `pulumi:"azureSkus"` + // Deprecated: You should use 'comparison' instead of 'base_comparison_basic'. This attribute still exists for backwards compatibility. + BaseComparisonBasics ManagementZoneRuleConditionBaseComparisonBasicArrayInput `pulumi:"baseComparisonBasics"` + // Deprecated: 'base_condition_key' is deprecated. You should use 'key' + BaseConditionKeys ManagementZoneRuleConditionBaseConditionKeyArrayInput `pulumi:"baseConditionKeys"` + // Deprecated: You should use 'bitness' instead of 'bitness_comparision'. This attribute still exists for backwards compatibility. + BitnessComparisions ManagementZoneRuleConditionBitnessComparisionArrayInput `pulumi:"bitnessComparisions"` + Bitnesses ManagementZoneRuleConditionBitnessArrayInput `pulumi:"bitnesses"` + // Deprecated: You should use 'cloud_type' instead of 'cloud_type_comparison'. This attribute still exists for backwards compatibility. + CloudTypeComparisons ManagementZoneRuleConditionCloudTypeComparisonArrayInput `pulumi:"cloudTypeComparisons"` + CloudTypes ManagementZoneRuleConditionCloudTypeArrayInput `pulumi:"cloudTypes"` + Comparisons ManagementZoneRuleConditionComparisonArrayInput `pulumi:"comparisons"` + // Deprecated: You should use 'custom_application_type' instead of 'custom_application_type_comparison'. This attribute still exists for backwards compatibility. + CustomApplicationTypeComparisons ManagementZoneRuleConditionCustomApplicationTypeComparisonArrayInput `pulumi:"customApplicationTypeComparisons"` + CustomApplicationTypes ManagementZoneRuleConditionCustomApplicationTypeArrayInput `pulumi:"customApplicationTypes"` + // Deprecated: 'custom_host_metadata_condition_key' is deprecated. You should use 'custom_host_metadata' + CustomHostMetadataConditionKeys ManagementZoneRuleConditionCustomHostMetadataConditionKeyArrayInput `pulumi:"customHostMetadataConditionKeys"` + CustomHostMetadatas ManagementZoneRuleConditionCustomHostMetadataArrayInput `pulumi:"customHostMetadatas"` + // Deprecated: 'custom_process_metadata_condition_key' is deprecated. You should use 'custom_process_metadata' + CustomProcessMetadataConditionKeys ManagementZoneRuleConditionCustomProcessMetadataConditionKeyArrayInput `pulumi:"customProcessMetadataConditionKeys"` + CustomProcessMetadatas ManagementZoneRuleConditionCustomProcessMetadataArrayInput `pulumi:"customProcessMetadatas"` + DatabaseTopologies ManagementZoneRuleConditionDatabaseTopologyArrayInput `pulumi:"databaseTopologies"` + // Deprecated: You should use 'database_topology' instead of 'database_topology_comparison'. This attribute still exists for backwards compatibility. + DatabaseTopologyComparisons ManagementZoneRuleConditionDatabaseTopologyComparisonArrayInput `pulumi:"databaseTopologyComparisons"` + // Deprecated: You should use 'dcrum_decoder' instead of 'dcrum_decoder_comparison'. This attribute still exists for backwards compatibility. + DcrumDecoderComparisons ManagementZoneRuleConditionDcrumDecoderComparisonArrayInput `pulumi:"dcrumDecoderComparisons"` + DcrumDecoders ManagementZoneRuleConditionDcrumDecoderArrayInput `pulumi:"dcrumDecoders"` + Entities ManagementZoneRuleConditionEntityArrayInput `pulumi:"entities"` + // Deprecated: You should use 'entity' instead of 'entity_id_comparison'. This attribute still exists for backwards compatibility. + EntityIdComparisons ManagementZoneRuleConditionEntityIdComparisonArrayInput `pulumi:"entityIdComparisons"` + HostTeches ManagementZoneRuleConditionHostTechArrayInput `pulumi:"hostTeches"` + // Deprecated: `hypervisor_type_comparision` is deprecated. Use `hypervisor` instead + HypervisorTypeComparisions ManagementZoneRuleConditionHypervisorTypeComparisionArrayInput `pulumi:"hypervisorTypeComparisions"` + Hypervisors ManagementZoneRuleConditionHypervisorArrayInput `pulumi:"hypervisors"` + // Deprecated: You should use 'indexed_name' instead of 'indexed_name_comparison'. This attribute still exists for backwards compatibility. + IndexedNameComparisons ManagementZoneRuleConditionIndexedNameComparisonArrayInput `pulumi:"indexedNameComparisons"` + IndexedNames ManagementZoneRuleConditionIndexedNameArrayInput `pulumi:"indexedNames"` + // Deprecated: You should use 'indexed_string' instead of 'indexed_string_comparison'. This attribute still exists for backwards compatibility. + IndexedStringComparisons ManagementZoneRuleConditionIndexedStringComparisonArrayInput `pulumi:"indexedStringComparisons"` + IndexedStrings ManagementZoneRuleConditionIndexedStringArrayInput `pulumi:"indexedStrings"` + // Deprecated: You should use 'indexed_tag' instead of 'indexed_tag_comparison'. This attribute still exists for backwards compatibility. + IndexedTagComparisons ManagementZoneRuleConditionIndexedTagComparisonArrayInput `pulumi:"indexedTagComparisons"` + IndexedTags ManagementZoneRuleConditionIndexedTagArrayInput `pulumi:"indexedTags"` + // Deprecated: You should use 'integer' instead of 'integer_comparison'. This attribute still exists for backwards compatibility. + IntegerComparisons ManagementZoneRuleConditionIntegerComparisonArrayInput `pulumi:"integerComparisons"` + Integers ManagementZoneRuleConditionIntegerArrayInput `pulumi:"integers"` + // Deprecated: You should use 'ipaddress' instead of 'ipaddress_comparison'. This attribute still exists for backwards compatibility. + IpaddressComparisons ManagementZoneRuleConditionIpaddressComparisonArrayInput `pulumi:"ipaddressComparisons"` + Ipaddresses ManagementZoneRuleConditionIpaddressArrayInput `pulumi:"ipaddresses"` + Keys ManagementZoneRuleConditionKeyArrayInput `pulumi:"keys"` + // Deprecated: You should use 'mobile_platform' instead of 'mobile_platform_comparison'. This attribute still exists for backwards compatibility. + MobilePlatformComparisons ManagementZoneRuleConditionMobilePlatformComparisonArrayInput `pulumi:"mobilePlatformComparisons"` + MobilePlatforms ManagementZoneRuleConditionMobilePlatformArrayInput `pulumi:"mobilePlatforms"` + OsArches ManagementZoneRuleConditionOsArchArrayInput `pulumi:"osArches"` + OsTypes ManagementZoneRuleConditionOsTypeArrayInput `pulumi:"osTypes"` + // Deprecated: You should use 'os_arch' instead of 'osarchitecture_comparison'. This attribute still exists for backwards compatibility. + OsarchitectureComparisons ManagementZoneRuleConditionOsarchitectureComparisonArrayInput `pulumi:"osarchitectureComparisons"` + // Deprecated: You should use 'os_type' instead of 'ostype_comparison'. This attribute still exists for backwards compatibility. + OstypeComparisons ManagementZoneRuleConditionOstypeComparisonArrayInput `pulumi:"ostypeComparisons"` + // Deprecated: You should use 'paas_type' instead of 'paas_type_comparison'. This attribute still exists for backwards compatibility. + PaasTypeComparisons ManagementZoneRuleConditionPaasTypeComparisonArrayInput `pulumi:"paasTypeComparisons"` + PaasTypes ManagementZoneRuleConditionPaasTypeArrayInput `pulumi:"paasTypes"` + // Deprecated: 'process_metadata_condition_key' is deprecated. You should use 'process_metadata' + ProcessMetadataConditionKeys ManagementZoneRuleConditionProcessMetadataConditionKeyArrayInput `pulumi:"processMetadataConditionKeys"` + ProcessMetadatas ManagementZoneRuleConditionProcessMetadataArrayInput `pulumi:"processMetadatas"` + ServiceTopologies ManagementZoneRuleConditionServiceTopologyArrayInput `pulumi:"serviceTopologies"` + // Deprecated: You should use 'service_topology' instead of 'service_topology_comparison'. This attribute still exists for backwards compatibility. + ServiceTopologyComparisons ManagementZoneRuleConditionServiceTopologyComparisonArrayInput `pulumi:"serviceTopologyComparisons"` + // Deprecated: You should use 'service_type' instead of 'service_type_comparison'. This attribute still exists for backwards compatibility. + ServiceTypeComparisons ManagementZoneRuleConditionServiceTypeComparisonArrayInput `pulumi:"serviceTypeComparisons"` + ServiceTypes ManagementZoneRuleConditionServiceTypeArrayInput `pulumi:"serviceTypes"` + // Deprecated: You should use 'host_tech' instead of 'simple_host_tech_comparison'. This attribute still exists for backwards compatibility. + SimpleHostTechComparisons ManagementZoneRuleConditionSimpleHostTechComparisonArrayInput `pulumi:"simpleHostTechComparisons"` + // Deprecated: You should use 'tech' instead of 'simple_tech_comparison'. This attribute still exists for backwards compatibility. + SimpleTechComparisons ManagementZoneRuleConditionSimpleTechComparisonArrayInput `pulumi:"simpleTechComparisons"` + // Deprecated: You should use 'string' instead of 'string_comparison'. This attribute still exists for backwards compatibility. + StringComparisons ManagementZoneRuleConditionStringComparisonArrayInput `pulumi:"stringComparisons"` + // Deprecated: 'string_condition_key' is deprecated. You should use 'string_key' + StringConditionKeys ManagementZoneRuleConditionStringConditionKeyArrayInput `pulumi:"stringConditionKeys"` + StringKeys ManagementZoneRuleConditionStringKeyArrayInput `pulumi:"stringKeys"` + Strings ManagementZoneRuleConditionStringArrayInput `pulumi:"strings"` + // Deprecated: You should use 'synthetic_engine' instead of 'synthetic_engine_type_comparison'. This attribute still exists for backwards compatibility. + SyntheticEngineTypeComparisons ManagementZoneRuleConditionSyntheticEngineTypeComparisonArrayInput `pulumi:"syntheticEngineTypeComparisons"` + SyntheticEngines ManagementZoneRuleConditionSyntheticEngineArrayInput `pulumi:"syntheticEngines"` + // Deprecated: You should use 'tag' instead of 'tag_comparison'. This attribute still exists for backwards compatibility. + TagComparisons ManagementZoneRuleConditionTagComparisonArrayInput `pulumi:"tagComparisons"` + Tags ManagementZoneRuleConditionTagArrayInput `pulumi:"tags"` + Teches ManagementZoneRuleConditionTechArrayInput `pulumi:"teches"` + Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` +} + +func (ManagementZoneRuleConditionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleCondition)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionArgs) ToManagementZoneRuleConditionOutput() ManagementZoneRuleConditionOutput { + return i.ToManagementZoneRuleConditionOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionArgs) ToManagementZoneRuleConditionOutputWithContext(ctx context.Context) ManagementZoneRuleConditionOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionOutput) +} + +// ManagementZoneRuleConditionArrayInput is an input type that accepts ManagementZoneRuleConditionArray and ManagementZoneRuleConditionArrayOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionArrayInput` via: +// +// ManagementZoneRuleConditionArray{ ManagementZoneRuleConditionArgs{...} } +type ManagementZoneRuleConditionArrayInput interface { + pulumi.Input + + ToManagementZoneRuleConditionArrayOutput() ManagementZoneRuleConditionArrayOutput + ToManagementZoneRuleConditionArrayOutputWithContext(context.Context) ManagementZoneRuleConditionArrayOutput +} + +type ManagementZoneRuleConditionArray []ManagementZoneRuleConditionInput + +func (ManagementZoneRuleConditionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleCondition)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionArray) ToManagementZoneRuleConditionArrayOutput() ManagementZoneRuleConditionArrayOutput { + return i.ToManagementZoneRuleConditionArrayOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionArray) ToManagementZoneRuleConditionArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionArrayOutput) +} + +type ManagementZoneRuleConditionOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleCondition)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionOutput) ToManagementZoneRuleConditionOutput() ManagementZoneRuleConditionOutput { + return o +} + +func (o ManagementZoneRuleConditionOutput) ToManagementZoneRuleConditionOutputWithContext(ctx context.Context) ManagementZoneRuleConditionOutput { + return o +} + +// Deprecated: You should use 'application_type' instead of 'application_type_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) ApplicationTypeComparisons() ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionApplicationTypeComparison { + return v.ApplicationTypeComparisons + }).(ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) ApplicationTypes() ManagementZoneRuleConditionApplicationTypeArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionApplicationType { + return v.ApplicationTypes + }).(ManagementZoneRuleConditionApplicationTypeArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) AzureComputeModeComparisons() ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionAzureComputeModeComparison { + return v.AzureComputeModeComparisons + }).(ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput) +} + +// Deprecated: You should use 'azure_compute_mode' instead of 'azure_compute_mode_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) AzureComputeModes() ManagementZoneRuleConditionAzureComputeModeArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionAzureComputeMode { + return v.AzureComputeModes + }).(ManagementZoneRuleConditionAzureComputeModeArrayOutput) +} + +// Deprecated: You should use 'azure_sku' instead of 'azure_sku_comparision'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) AzureSkuComparisions() ManagementZoneRuleConditionAzureSkuComparisionArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionAzureSkuComparision { + return v.AzureSkuComparisions + }).(ManagementZoneRuleConditionAzureSkuComparisionArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) AzureSkus() ManagementZoneRuleConditionAzureSkusArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionAzureSkus { return v.AzureSkus }).(ManagementZoneRuleConditionAzureSkusArrayOutput) +} + +// Deprecated: You should use 'comparison' instead of 'base_comparison_basic'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) BaseComparisonBasics() ManagementZoneRuleConditionBaseComparisonBasicArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionBaseComparisonBasic { + return v.BaseComparisonBasics + }).(ManagementZoneRuleConditionBaseComparisonBasicArrayOutput) +} + +// Deprecated: 'base_condition_key' is deprecated. You should use 'key' +func (o ManagementZoneRuleConditionOutput) BaseConditionKeys() ManagementZoneRuleConditionBaseConditionKeyArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionBaseConditionKey { + return v.BaseConditionKeys + }).(ManagementZoneRuleConditionBaseConditionKeyArrayOutput) +} + +// Deprecated: You should use 'bitness' instead of 'bitness_comparision'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) BitnessComparisions() ManagementZoneRuleConditionBitnessComparisionArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionBitnessComparision { + return v.BitnessComparisions + }).(ManagementZoneRuleConditionBitnessComparisionArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) Bitnesses() ManagementZoneRuleConditionBitnessArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionBitness { return v.Bitnesses }).(ManagementZoneRuleConditionBitnessArrayOutput) +} + +// Deprecated: You should use 'cloud_type' instead of 'cloud_type_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) CloudTypeComparisons() ManagementZoneRuleConditionCloudTypeComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionCloudTypeComparison { + return v.CloudTypeComparisons + }).(ManagementZoneRuleConditionCloudTypeComparisonArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) CloudTypes() ManagementZoneRuleConditionCloudTypeArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionCloudType { return v.CloudTypes }).(ManagementZoneRuleConditionCloudTypeArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) Comparisons() ManagementZoneRuleConditionComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionComparison { return v.Comparisons }).(ManagementZoneRuleConditionComparisonArrayOutput) +} + +// Deprecated: You should use 'custom_application_type' instead of 'custom_application_type_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) CustomApplicationTypeComparisons() ManagementZoneRuleConditionCustomApplicationTypeComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionCustomApplicationTypeComparison { + return v.CustomApplicationTypeComparisons + }).(ManagementZoneRuleConditionCustomApplicationTypeComparisonArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) CustomApplicationTypes() ManagementZoneRuleConditionCustomApplicationTypeArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionCustomApplicationType { + return v.CustomApplicationTypes + }).(ManagementZoneRuleConditionCustomApplicationTypeArrayOutput) +} + +// Deprecated: 'custom_host_metadata_condition_key' is deprecated. You should use 'custom_host_metadata' +func (o ManagementZoneRuleConditionOutput) CustomHostMetadataConditionKeys() ManagementZoneRuleConditionCustomHostMetadataConditionKeyArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionCustomHostMetadataConditionKey { + return v.CustomHostMetadataConditionKeys + }).(ManagementZoneRuleConditionCustomHostMetadataConditionKeyArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) CustomHostMetadatas() ManagementZoneRuleConditionCustomHostMetadataArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionCustomHostMetadata { + return v.CustomHostMetadatas + }).(ManagementZoneRuleConditionCustomHostMetadataArrayOutput) +} + +// Deprecated: 'custom_process_metadata_condition_key' is deprecated. You should use 'custom_process_metadata' +func (o ManagementZoneRuleConditionOutput) CustomProcessMetadataConditionKeys() ManagementZoneRuleConditionCustomProcessMetadataConditionKeyArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionCustomProcessMetadataConditionKey { + return v.CustomProcessMetadataConditionKeys + }).(ManagementZoneRuleConditionCustomProcessMetadataConditionKeyArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) CustomProcessMetadatas() ManagementZoneRuleConditionCustomProcessMetadataArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionCustomProcessMetadata { + return v.CustomProcessMetadatas + }).(ManagementZoneRuleConditionCustomProcessMetadataArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) DatabaseTopologies() ManagementZoneRuleConditionDatabaseTopologyArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionDatabaseTopology { + return v.DatabaseTopologies + }).(ManagementZoneRuleConditionDatabaseTopologyArrayOutput) +} + +// Deprecated: You should use 'database_topology' instead of 'database_topology_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) DatabaseTopologyComparisons() ManagementZoneRuleConditionDatabaseTopologyComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionDatabaseTopologyComparison { + return v.DatabaseTopologyComparisons + }).(ManagementZoneRuleConditionDatabaseTopologyComparisonArrayOutput) +} + +// Deprecated: You should use 'dcrum_decoder' instead of 'dcrum_decoder_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) DcrumDecoderComparisons() ManagementZoneRuleConditionDcrumDecoderComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionDcrumDecoderComparison { + return v.DcrumDecoderComparisons + }).(ManagementZoneRuleConditionDcrumDecoderComparisonArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) DcrumDecoders() ManagementZoneRuleConditionDcrumDecoderArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionDcrumDecoder { return v.DcrumDecoders }).(ManagementZoneRuleConditionDcrumDecoderArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) Entities() ManagementZoneRuleConditionEntityArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionEntity { return v.Entities }).(ManagementZoneRuleConditionEntityArrayOutput) +} + +// Deprecated: You should use 'entity' instead of 'entity_id_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) EntityIdComparisons() ManagementZoneRuleConditionEntityIdComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionEntityIdComparison { + return v.EntityIdComparisons + }).(ManagementZoneRuleConditionEntityIdComparisonArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) HostTeches() ManagementZoneRuleConditionHostTechArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionHostTech { return v.HostTeches }).(ManagementZoneRuleConditionHostTechArrayOutput) +} + +// Deprecated: `hypervisor_type_comparision` is deprecated. Use `hypervisor` instead +func (o ManagementZoneRuleConditionOutput) HypervisorTypeComparisions() ManagementZoneRuleConditionHypervisorTypeComparisionArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionHypervisorTypeComparision { + return v.HypervisorTypeComparisions + }).(ManagementZoneRuleConditionHypervisorTypeComparisionArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) Hypervisors() ManagementZoneRuleConditionHypervisorArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionHypervisor { return v.Hypervisors }).(ManagementZoneRuleConditionHypervisorArrayOutput) +} + +// Deprecated: You should use 'indexed_name' instead of 'indexed_name_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) IndexedNameComparisons() ManagementZoneRuleConditionIndexedNameComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionIndexedNameComparison { + return v.IndexedNameComparisons + }).(ManagementZoneRuleConditionIndexedNameComparisonArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) IndexedNames() ManagementZoneRuleConditionIndexedNameArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionIndexedName { return v.IndexedNames }).(ManagementZoneRuleConditionIndexedNameArrayOutput) +} + +// Deprecated: You should use 'indexed_string' instead of 'indexed_string_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) IndexedStringComparisons() ManagementZoneRuleConditionIndexedStringComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionIndexedStringComparison { + return v.IndexedStringComparisons + }).(ManagementZoneRuleConditionIndexedStringComparisonArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) IndexedStrings() ManagementZoneRuleConditionIndexedStringArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionIndexedString { + return v.IndexedStrings + }).(ManagementZoneRuleConditionIndexedStringArrayOutput) +} + +// Deprecated: You should use 'indexed_tag' instead of 'indexed_tag_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) IndexedTagComparisons() ManagementZoneRuleConditionIndexedTagComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionIndexedTagComparison { + return v.IndexedTagComparisons + }).(ManagementZoneRuleConditionIndexedTagComparisonArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) IndexedTags() ManagementZoneRuleConditionIndexedTagArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionIndexedTag { return v.IndexedTags }).(ManagementZoneRuleConditionIndexedTagArrayOutput) +} + +// Deprecated: You should use 'integer' instead of 'integer_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) IntegerComparisons() ManagementZoneRuleConditionIntegerComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionIntegerComparison { + return v.IntegerComparisons + }).(ManagementZoneRuleConditionIntegerComparisonArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) Integers() ManagementZoneRuleConditionIntegerArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionInteger { return v.Integers }).(ManagementZoneRuleConditionIntegerArrayOutput) +} + +// Deprecated: You should use 'ipaddress' instead of 'ipaddress_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) IpaddressComparisons() ManagementZoneRuleConditionIpaddressComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionIpaddressComparison { + return v.IpaddressComparisons + }).(ManagementZoneRuleConditionIpaddressComparisonArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) Ipaddresses() ManagementZoneRuleConditionIpaddressArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionIpaddress { return v.Ipaddresses }).(ManagementZoneRuleConditionIpaddressArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) Keys() ManagementZoneRuleConditionKeyArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionKey { return v.Keys }).(ManagementZoneRuleConditionKeyArrayOutput) +} + +// Deprecated: You should use 'mobile_platform' instead of 'mobile_platform_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) MobilePlatformComparisons() ManagementZoneRuleConditionMobilePlatformComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionMobilePlatformComparison { + return v.MobilePlatformComparisons + }).(ManagementZoneRuleConditionMobilePlatformComparisonArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) MobilePlatforms() ManagementZoneRuleConditionMobilePlatformArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionMobilePlatform { + return v.MobilePlatforms + }).(ManagementZoneRuleConditionMobilePlatformArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) OsArches() ManagementZoneRuleConditionOsArchArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionOsArch { return v.OsArches }).(ManagementZoneRuleConditionOsArchArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) OsTypes() ManagementZoneRuleConditionOsTypeArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionOsType { return v.OsTypes }).(ManagementZoneRuleConditionOsTypeArrayOutput) +} + +// Deprecated: You should use 'os_arch' instead of 'osarchitecture_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) OsarchitectureComparisons() ManagementZoneRuleConditionOsarchitectureComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionOsarchitectureComparison { + return v.OsarchitectureComparisons + }).(ManagementZoneRuleConditionOsarchitectureComparisonArrayOutput) +} + +// Deprecated: You should use 'os_type' instead of 'ostype_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) OstypeComparisons() ManagementZoneRuleConditionOstypeComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionOstypeComparison { + return v.OstypeComparisons + }).(ManagementZoneRuleConditionOstypeComparisonArrayOutput) +} + +// Deprecated: You should use 'paas_type' instead of 'paas_type_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) PaasTypeComparisons() ManagementZoneRuleConditionPaasTypeComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionPaasTypeComparison { + return v.PaasTypeComparisons + }).(ManagementZoneRuleConditionPaasTypeComparisonArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) PaasTypes() ManagementZoneRuleConditionPaasTypeArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionPaasType { return v.PaasTypes }).(ManagementZoneRuleConditionPaasTypeArrayOutput) +} + +// Deprecated: 'process_metadata_condition_key' is deprecated. You should use 'process_metadata' +func (o ManagementZoneRuleConditionOutput) ProcessMetadataConditionKeys() ManagementZoneRuleConditionProcessMetadataConditionKeyArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionProcessMetadataConditionKey { + return v.ProcessMetadataConditionKeys + }).(ManagementZoneRuleConditionProcessMetadataConditionKeyArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) ProcessMetadatas() ManagementZoneRuleConditionProcessMetadataArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionProcessMetadata { + return v.ProcessMetadatas + }).(ManagementZoneRuleConditionProcessMetadataArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) ServiceTopologies() ManagementZoneRuleConditionServiceTopologyArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionServiceTopology { + return v.ServiceTopologies + }).(ManagementZoneRuleConditionServiceTopologyArrayOutput) +} + +// Deprecated: You should use 'service_topology' instead of 'service_topology_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) ServiceTopologyComparisons() ManagementZoneRuleConditionServiceTopologyComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionServiceTopologyComparison { + return v.ServiceTopologyComparisons + }).(ManagementZoneRuleConditionServiceTopologyComparisonArrayOutput) +} + +// Deprecated: You should use 'service_type' instead of 'service_type_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) ServiceTypeComparisons() ManagementZoneRuleConditionServiceTypeComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionServiceTypeComparison { + return v.ServiceTypeComparisons + }).(ManagementZoneRuleConditionServiceTypeComparisonArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) ServiceTypes() ManagementZoneRuleConditionServiceTypeArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionServiceType { return v.ServiceTypes }).(ManagementZoneRuleConditionServiceTypeArrayOutput) +} + +// Deprecated: You should use 'host_tech' instead of 'simple_host_tech_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) SimpleHostTechComparisons() ManagementZoneRuleConditionSimpleHostTechComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionSimpleHostTechComparison { + return v.SimpleHostTechComparisons + }).(ManagementZoneRuleConditionSimpleHostTechComparisonArrayOutput) +} + +// Deprecated: You should use 'tech' instead of 'simple_tech_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) SimpleTechComparisons() ManagementZoneRuleConditionSimpleTechComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionSimpleTechComparison { + return v.SimpleTechComparisons + }).(ManagementZoneRuleConditionSimpleTechComparisonArrayOutput) +} + +// Deprecated: You should use 'string' instead of 'string_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) StringComparisons() ManagementZoneRuleConditionStringComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionStringComparison { + return v.StringComparisons + }).(ManagementZoneRuleConditionStringComparisonArrayOutput) +} + +// Deprecated: 'string_condition_key' is deprecated. You should use 'string_key' +func (o ManagementZoneRuleConditionOutput) StringConditionKeys() ManagementZoneRuleConditionStringConditionKeyArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionStringConditionKey { + return v.StringConditionKeys + }).(ManagementZoneRuleConditionStringConditionKeyArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) StringKeys() ManagementZoneRuleConditionStringKeyArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionStringKey { return v.StringKeys }).(ManagementZoneRuleConditionStringKeyArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) Strings() ManagementZoneRuleConditionStringArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionString { return v.Strings }).(ManagementZoneRuleConditionStringArrayOutput) +} + +// Deprecated: You should use 'synthetic_engine' instead of 'synthetic_engine_type_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) SyntheticEngineTypeComparisons() ManagementZoneRuleConditionSyntheticEngineTypeComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionSyntheticEngineTypeComparison { + return v.SyntheticEngineTypeComparisons + }).(ManagementZoneRuleConditionSyntheticEngineTypeComparisonArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) SyntheticEngines() ManagementZoneRuleConditionSyntheticEngineArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionSyntheticEngine { + return v.SyntheticEngines + }).(ManagementZoneRuleConditionSyntheticEngineArrayOutput) +} + +// Deprecated: You should use 'tag' instead of 'tag_comparison'. This attribute still exists for backwards compatibility. +func (o ManagementZoneRuleConditionOutput) TagComparisons() ManagementZoneRuleConditionTagComparisonArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionTagComparison { + return v.TagComparisons + }).(ManagementZoneRuleConditionTagComparisonArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) Tags() ManagementZoneRuleConditionTagArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionTag { return v.Tags }).(ManagementZoneRuleConditionTagArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) Teches() ManagementZoneRuleConditionTechArrayOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) []ManagementZoneRuleConditionTech { return v.Teches }).(ManagementZoneRuleConditionTechArrayOutput) +} + +func (o ManagementZoneRuleConditionOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleCondition) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +} + +type ManagementZoneRuleConditionArrayOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleCondition)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionArrayOutput) ToManagementZoneRuleConditionArrayOutput() ManagementZoneRuleConditionArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionArrayOutput) ToManagementZoneRuleConditionArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleCondition { + return vs[0].([]ManagementZoneRuleCondition)[vs[1].(int)] + }).(ManagementZoneRuleConditionOutput) +} + +type ManagementZoneRuleConditionApplicationType struct { + Negate *bool `pulumi:"negate"` + Operator string `pulumi:"operator"` + Unknowns *string `pulumi:"unknowns"` + Value *string `pulumi:"value"` +} + +// ManagementZoneRuleConditionApplicationTypeInput is an input type that accepts ManagementZoneRuleConditionApplicationTypeArgs and ManagementZoneRuleConditionApplicationTypeOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionApplicationTypeInput` via: +// +// ManagementZoneRuleConditionApplicationTypeArgs{...} +type ManagementZoneRuleConditionApplicationTypeInput interface { + pulumi.Input + + ToManagementZoneRuleConditionApplicationTypeOutput() ManagementZoneRuleConditionApplicationTypeOutput + ToManagementZoneRuleConditionApplicationTypeOutputWithContext(context.Context) ManagementZoneRuleConditionApplicationTypeOutput +} + +type ManagementZoneRuleConditionApplicationTypeArgs struct { + Negate pulumi.BoolPtrInput `pulumi:"negate"` + Operator pulumi.StringInput `pulumi:"operator"` + Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (ManagementZoneRuleConditionApplicationTypeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionApplicationType)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionApplicationTypeArgs) ToManagementZoneRuleConditionApplicationTypeOutput() ManagementZoneRuleConditionApplicationTypeOutput { + return i.ToManagementZoneRuleConditionApplicationTypeOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionApplicationTypeArgs) ToManagementZoneRuleConditionApplicationTypeOutputWithContext(ctx context.Context) ManagementZoneRuleConditionApplicationTypeOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionApplicationTypeOutput) +} + +// ManagementZoneRuleConditionApplicationTypeArrayInput is an input type that accepts ManagementZoneRuleConditionApplicationTypeArray and ManagementZoneRuleConditionApplicationTypeArrayOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionApplicationTypeArrayInput` via: +// +// ManagementZoneRuleConditionApplicationTypeArray{ ManagementZoneRuleConditionApplicationTypeArgs{...} } +type ManagementZoneRuleConditionApplicationTypeArrayInput interface { + pulumi.Input + + ToManagementZoneRuleConditionApplicationTypeArrayOutput() ManagementZoneRuleConditionApplicationTypeArrayOutput + ToManagementZoneRuleConditionApplicationTypeArrayOutputWithContext(context.Context) ManagementZoneRuleConditionApplicationTypeArrayOutput +} + +type ManagementZoneRuleConditionApplicationTypeArray []ManagementZoneRuleConditionApplicationTypeInput + +func (ManagementZoneRuleConditionApplicationTypeArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionApplicationType)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionApplicationTypeArray) ToManagementZoneRuleConditionApplicationTypeArrayOutput() ManagementZoneRuleConditionApplicationTypeArrayOutput { + return i.ToManagementZoneRuleConditionApplicationTypeArrayOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionApplicationTypeArray) ToManagementZoneRuleConditionApplicationTypeArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionApplicationTypeArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionApplicationTypeArrayOutput) +} + +type ManagementZoneRuleConditionApplicationTypeOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionApplicationTypeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionApplicationType)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionApplicationTypeOutput) ToManagementZoneRuleConditionApplicationTypeOutput() ManagementZoneRuleConditionApplicationTypeOutput { + return o +} + +func (o ManagementZoneRuleConditionApplicationTypeOutput) ToManagementZoneRuleConditionApplicationTypeOutputWithContext(ctx context.Context) ManagementZoneRuleConditionApplicationTypeOutput { + return o +} + +func (o ManagementZoneRuleConditionApplicationTypeOutput) Negate() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionApplicationType) *bool { return v.Negate }).(pulumi.BoolPtrOutput) +} + +func (o ManagementZoneRuleConditionApplicationTypeOutput) Operator() pulumi.StringOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionApplicationType) string { return v.Operator }).(pulumi.StringOutput) +} + +func (o ManagementZoneRuleConditionApplicationTypeOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionApplicationType) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +} + +func (o ManagementZoneRuleConditionApplicationTypeOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionApplicationType) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type ManagementZoneRuleConditionApplicationTypeArrayOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionApplicationTypeArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionApplicationType)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionApplicationTypeArrayOutput) ToManagementZoneRuleConditionApplicationTypeArrayOutput() ManagementZoneRuleConditionApplicationTypeArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionApplicationTypeArrayOutput) ToManagementZoneRuleConditionApplicationTypeArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionApplicationTypeArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionApplicationTypeArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionApplicationTypeOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionApplicationType { + return vs[0].([]ManagementZoneRuleConditionApplicationType)[vs[1].(int)] + }).(ManagementZoneRuleConditionApplicationTypeOutput) +} + +type ManagementZoneRuleConditionApplicationTypeComparison struct { + Negate *bool `pulumi:"negate"` + Operator string `pulumi:"operator"` + // Deprecated: The value of the attribute type is implicit, therefore shouldn't get specified + Type *string `pulumi:"type"` + Unknowns *string `pulumi:"unknowns"` + Value *string `pulumi:"value"` +} + +// ManagementZoneRuleConditionApplicationTypeComparisonInput is an input type that accepts ManagementZoneRuleConditionApplicationTypeComparisonArgs and ManagementZoneRuleConditionApplicationTypeComparisonOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionApplicationTypeComparisonInput` via: +// +// ManagementZoneRuleConditionApplicationTypeComparisonArgs{...} +type ManagementZoneRuleConditionApplicationTypeComparisonInput interface { + pulumi.Input + + ToManagementZoneRuleConditionApplicationTypeComparisonOutput() ManagementZoneRuleConditionApplicationTypeComparisonOutput + ToManagementZoneRuleConditionApplicationTypeComparisonOutputWithContext(context.Context) ManagementZoneRuleConditionApplicationTypeComparisonOutput +} + +type ManagementZoneRuleConditionApplicationTypeComparisonArgs struct { + Negate pulumi.BoolPtrInput `pulumi:"negate"` + Operator pulumi.StringInput `pulumi:"operator"` + // Deprecated: The value of the attribute type is implicit, therefore shouldn't get specified + Type pulumi.StringPtrInput `pulumi:"type"` + Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (ManagementZoneRuleConditionApplicationTypeComparisonArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionApplicationTypeComparison)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionApplicationTypeComparisonArgs) ToManagementZoneRuleConditionApplicationTypeComparisonOutput() ManagementZoneRuleConditionApplicationTypeComparisonOutput { + return i.ToManagementZoneRuleConditionApplicationTypeComparisonOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionApplicationTypeComparisonArgs) ToManagementZoneRuleConditionApplicationTypeComparisonOutputWithContext(ctx context.Context) ManagementZoneRuleConditionApplicationTypeComparisonOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionApplicationTypeComparisonOutput) +} + +// ManagementZoneRuleConditionApplicationTypeComparisonArrayInput is an input type that accepts ManagementZoneRuleConditionApplicationTypeComparisonArray and ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionApplicationTypeComparisonArrayInput` via: +// +// ManagementZoneRuleConditionApplicationTypeComparisonArray{ ManagementZoneRuleConditionApplicationTypeComparisonArgs{...} } +type ManagementZoneRuleConditionApplicationTypeComparisonArrayInput interface { + pulumi.Input + + ToManagementZoneRuleConditionApplicationTypeComparisonArrayOutput() ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput + ToManagementZoneRuleConditionApplicationTypeComparisonArrayOutputWithContext(context.Context) ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput +} + +type ManagementZoneRuleConditionApplicationTypeComparisonArray []ManagementZoneRuleConditionApplicationTypeComparisonInput + +func (ManagementZoneRuleConditionApplicationTypeComparisonArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionApplicationTypeComparison)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionApplicationTypeComparisonArray) ToManagementZoneRuleConditionApplicationTypeComparisonArrayOutput() ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput { + return i.ToManagementZoneRuleConditionApplicationTypeComparisonArrayOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionApplicationTypeComparisonArray) ToManagementZoneRuleConditionApplicationTypeComparisonArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput) +} + +type ManagementZoneRuleConditionApplicationTypeComparisonOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionApplicationTypeComparisonOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionApplicationTypeComparison)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionApplicationTypeComparisonOutput) ToManagementZoneRuleConditionApplicationTypeComparisonOutput() ManagementZoneRuleConditionApplicationTypeComparisonOutput { + return o +} + +func (o ManagementZoneRuleConditionApplicationTypeComparisonOutput) ToManagementZoneRuleConditionApplicationTypeComparisonOutputWithContext(ctx context.Context) ManagementZoneRuleConditionApplicationTypeComparisonOutput { + return o +} + +func (o ManagementZoneRuleConditionApplicationTypeComparisonOutput) Negate() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionApplicationTypeComparison) *bool { return v.Negate }).(pulumi.BoolPtrOutput) +} + +func (o ManagementZoneRuleConditionApplicationTypeComparisonOutput) Operator() pulumi.StringOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionApplicationTypeComparison) string { return v.Operator }).(pulumi.StringOutput) +} + +// Deprecated: The value of the attribute type is implicit, therefore shouldn't get specified +func (o ManagementZoneRuleConditionApplicationTypeComparisonOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionApplicationTypeComparison) *string { return v.Type }).(pulumi.StringPtrOutput) +} + +func (o ManagementZoneRuleConditionApplicationTypeComparisonOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionApplicationTypeComparison) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +} + +func (o ManagementZoneRuleConditionApplicationTypeComparisonOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionApplicationTypeComparison) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionApplicationTypeComparison)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput) ToManagementZoneRuleConditionApplicationTypeComparisonArrayOutput() ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput) ToManagementZoneRuleConditionApplicationTypeComparisonArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionApplicationTypeComparisonOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionApplicationTypeComparison { + return vs[0].([]ManagementZoneRuleConditionApplicationTypeComparison)[vs[1].(int)] + }).(ManagementZoneRuleConditionApplicationTypeComparisonOutput) +} + +type ManagementZoneRuleConditionAzureComputeMode struct { + Negate *bool `pulumi:"negate"` + Operator string `pulumi:"operator"` + Unknowns *string `pulumi:"unknowns"` + Value *string `pulumi:"value"` +} + +// ManagementZoneRuleConditionAzureComputeModeInput is an input type that accepts ManagementZoneRuleConditionAzureComputeModeArgs and ManagementZoneRuleConditionAzureComputeModeOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionAzureComputeModeInput` via: +// +// ManagementZoneRuleConditionAzureComputeModeArgs{...} +type ManagementZoneRuleConditionAzureComputeModeInput interface { + pulumi.Input + + ToManagementZoneRuleConditionAzureComputeModeOutput() ManagementZoneRuleConditionAzureComputeModeOutput + ToManagementZoneRuleConditionAzureComputeModeOutputWithContext(context.Context) ManagementZoneRuleConditionAzureComputeModeOutput +} + +type ManagementZoneRuleConditionAzureComputeModeArgs struct { + Negate pulumi.BoolPtrInput `pulumi:"negate"` + Operator pulumi.StringInput `pulumi:"operator"` + Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (ManagementZoneRuleConditionAzureComputeModeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionAzureComputeMode)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionAzureComputeModeArgs) ToManagementZoneRuleConditionAzureComputeModeOutput() ManagementZoneRuleConditionAzureComputeModeOutput { + return i.ToManagementZoneRuleConditionAzureComputeModeOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionAzureComputeModeArgs) ToManagementZoneRuleConditionAzureComputeModeOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureComputeModeOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionAzureComputeModeOutput) +} + +// ManagementZoneRuleConditionAzureComputeModeArrayInput is an input type that accepts ManagementZoneRuleConditionAzureComputeModeArray and ManagementZoneRuleConditionAzureComputeModeArrayOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionAzureComputeModeArrayInput` via: +// +// ManagementZoneRuleConditionAzureComputeModeArray{ ManagementZoneRuleConditionAzureComputeModeArgs{...} } +type ManagementZoneRuleConditionAzureComputeModeArrayInput interface { + pulumi.Input + + ToManagementZoneRuleConditionAzureComputeModeArrayOutput() ManagementZoneRuleConditionAzureComputeModeArrayOutput + ToManagementZoneRuleConditionAzureComputeModeArrayOutputWithContext(context.Context) ManagementZoneRuleConditionAzureComputeModeArrayOutput +} + +type ManagementZoneRuleConditionAzureComputeModeArray []ManagementZoneRuleConditionAzureComputeModeInput + +func (ManagementZoneRuleConditionAzureComputeModeArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionAzureComputeMode)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionAzureComputeModeArray) ToManagementZoneRuleConditionAzureComputeModeArrayOutput() ManagementZoneRuleConditionAzureComputeModeArrayOutput { + return i.ToManagementZoneRuleConditionAzureComputeModeArrayOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionAzureComputeModeArray) ToManagementZoneRuleConditionAzureComputeModeArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureComputeModeArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionAzureComputeModeArrayOutput) +} + +type ManagementZoneRuleConditionAzureComputeModeOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionAzureComputeModeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionAzureComputeMode)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionAzureComputeModeOutput) ToManagementZoneRuleConditionAzureComputeModeOutput() ManagementZoneRuleConditionAzureComputeModeOutput { + return o +} + +func (o ManagementZoneRuleConditionAzureComputeModeOutput) ToManagementZoneRuleConditionAzureComputeModeOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureComputeModeOutput { + return o +} + +func (o ManagementZoneRuleConditionAzureComputeModeOutput) Negate() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionAzureComputeMode) *bool { return v.Negate }).(pulumi.BoolPtrOutput) +} + +func (o ManagementZoneRuleConditionAzureComputeModeOutput) Operator() pulumi.StringOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionAzureComputeMode) string { return v.Operator }).(pulumi.StringOutput) +} + +func (o ManagementZoneRuleConditionAzureComputeModeOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionAzureComputeMode) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +} + +func (o ManagementZoneRuleConditionAzureComputeModeOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionAzureComputeMode) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type ManagementZoneRuleConditionAzureComputeModeArrayOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionAzureComputeModeArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionAzureComputeMode)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionAzureComputeModeArrayOutput) ToManagementZoneRuleConditionAzureComputeModeArrayOutput() ManagementZoneRuleConditionAzureComputeModeArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionAzureComputeModeArrayOutput) ToManagementZoneRuleConditionAzureComputeModeArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureComputeModeArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionAzureComputeModeArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionAzureComputeModeOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionAzureComputeMode { + return vs[0].([]ManagementZoneRuleConditionAzureComputeMode)[vs[1].(int)] + }).(ManagementZoneRuleConditionAzureComputeModeOutput) +} + +type ManagementZoneRuleConditionAzureComputeModeComparison struct { + Negate *bool `pulumi:"negate"` + Operator string `pulumi:"operator"` + Unknowns *string `pulumi:"unknowns"` + Value *string `pulumi:"value"` +} + +// ManagementZoneRuleConditionAzureComputeModeComparisonInput is an input type that accepts ManagementZoneRuleConditionAzureComputeModeComparisonArgs and ManagementZoneRuleConditionAzureComputeModeComparisonOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionAzureComputeModeComparisonInput` via: +// +// ManagementZoneRuleConditionAzureComputeModeComparisonArgs{...} +type ManagementZoneRuleConditionAzureComputeModeComparisonInput interface { + pulumi.Input + + ToManagementZoneRuleConditionAzureComputeModeComparisonOutput() ManagementZoneRuleConditionAzureComputeModeComparisonOutput + ToManagementZoneRuleConditionAzureComputeModeComparisonOutputWithContext(context.Context) ManagementZoneRuleConditionAzureComputeModeComparisonOutput +} + +type ManagementZoneRuleConditionAzureComputeModeComparisonArgs struct { + Negate pulumi.BoolPtrInput `pulumi:"negate"` + Operator pulumi.StringInput `pulumi:"operator"` + Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (ManagementZoneRuleConditionAzureComputeModeComparisonArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionAzureComputeModeComparison)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionAzureComputeModeComparisonArgs) ToManagementZoneRuleConditionAzureComputeModeComparisonOutput() ManagementZoneRuleConditionAzureComputeModeComparisonOutput { + return i.ToManagementZoneRuleConditionAzureComputeModeComparisonOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionAzureComputeModeComparisonArgs) ToManagementZoneRuleConditionAzureComputeModeComparisonOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureComputeModeComparisonOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionAzureComputeModeComparisonOutput) +} + +// ManagementZoneRuleConditionAzureComputeModeComparisonArrayInput is an input type that accepts ManagementZoneRuleConditionAzureComputeModeComparisonArray and ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionAzureComputeModeComparisonArrayInput` via: +// +// ManagementZoneRuleConditionAzureComputeModeComparisonArray{ ManagementZoneRuleConditionAzureComputeModeComparisonArgs{...} } +type ManagementZoneRuleConditionAzureComputeModeComparisonArrayInput interface { + pulumi.Input + + ToManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput() ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput + ToManagementZoneRuleConditionAzureComputeModeComparisonArrayOutputWithContext(context.Context) ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput +} + +type ManagementZoneRuleConditionAzureComputeModeComparisonArray []ManagementZoneRuleConditionAzureComputeModeComparisonInput + +func (ManagementZoneRuleConditionAzureComputeModeComparisonArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionAzureComputeModeComparison)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionAzureComputeModeComparisonArray) ToManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput() ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput { + return i.ToManagementZoneRuleConditionAzureComputeModeComparisonArrayOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionAzureComputeModeComparisonArray) ToManagementZoneRuleConditionAzureComputeModeComparisonArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput) +} + +type ManagementZoneRuleConditionAzureComputeModeComparisonOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionAzureComputeModeComparisonOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionAzureComputeModeComparison)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionAzureComputeModeComparisonOutput) ToManagementZoneRuleConditionAzureComputeModeComparisonOutput() ManagementZoneRuleConditionAzureComputeModeComparisonOutput { + return o +} + +func (o ManagementZoneRuleConditionAzureComputeModeComparisonOutput) ToManagementZoneRuleConditionAzureComputeModeComparisonOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureComputeModeComparisonOutput { + return o +} + +func (o ManagementZoneRuleConditionAzureComputeModeComparisonOutput) Negate() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionAzureComputeModeComparison) *bool { return v.Negate }).(pulumi.BoolPtrOutput) +} + +func (o ManagementZoneRuleConditionAzureComputeModeComparisonOutput) Operator() pulumi.StringOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionAzureComputeModeComparison) string { return v.Operator }).(pulumi.StringOutput) +} + +func (o ManagementZoneRuleConditionAzureComputeModeComparisonOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionAzureComputeModeComparison) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +} + +func (o ManagementZoneRuleConditionAzureComputeModeComparisonOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionAzureComputeModeComparison) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionAzureComputeModeComparison)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput) ToManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput() ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput) ToManagementZoneRuleConditionAzureComputeModeComparisonArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionAzureComputeModeComparisonOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionAzureComputeModeComparison { + return vs[0].([]ManagementZoneRuleConditionAzureComputeModeComparison)[vs[1].(int)] + }).(ManagementZoneRuleConditionAzureComputeModeComparisonOutput) +} + +type ManagementZoneRuleConditionAzureSkuComparision struct { + Negate *bool `pulumi:"negate"` + Operator string `pulumi:"operator"` + // Deprecated: The value of the attribute type is implicit, therefore shouldn't get specified + Type *string `pulumi:"type"` + Unknowns *string `pulumi:"unknowns"` + Value *string `pulumi:"value"` +} + +// ManagementZoneRuleConditionAzureSkuComparisionInput is an input type that accepts ManagementZoneRuleConditionAzureSkuComparisionArgs and ManagementZoneRuleConditionAzureSkuComparisionOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionAzureSkuComparisionInput` via: +// +// ManagementZoneRuleConditionAzureSkuComparisionArgs{...} +type ManagementZoneRuleConditionAzureSkuComparisionInput interface { + pulumi.Input + + ToManagementZoneRuleConditionAzureSkuComparisionOutput() ManagementZoneRuleConditionAzureSkuComparisionOutput + ToManagementZoneRuleConditionAzureSkuComparisionOutputWithContext(context.Context) ManagementZoneRuleConditionAzureSkuComparisionOutput +} + +type ManagementZoneRuleConditionAzureSkuComparisionArgs struct { + Negate pulumi.BoolPtrInput `pulumi:"negate"` + Operator pulumi.StringInput `pulumi:"operator"` + // Deprecated: The value of the attribute type is implicit, therefore shouldn't get specified + Type pulumi.StringPtrInput `pulumi:"type"` + Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (ManagementZoneRuleConditionAzureSkuComparisionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionAzureSkuComparision)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionAzureSkuComparisionArgs) ToManagementZoneRuleConditionAzureSkuComparisionOutput() ManagementZoneRuleConditionAzureSkuComparisionOutput { + return i.ToManagementZoneRuleConditionAzureSkuComparisionOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionAzureSkuComparisionArgs) ToManagementZoneRuleConditionAzureSkuComparisionOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureSkuComparisionOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionAzureSkuComparisionOutput) +} + +// ManagementZoneRuleConditionAzureSkuComparisionArrayInput is an input type that accepts ManagementZoneRuleConditionAzureSkuComparisionArray and ManagementZoneRuleConditionAzureSkuComparisionArrayOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionAzureSkuComparisionArrayInput` via: +// +// ManagementZoneRuleConditionAzureSkuComparisionArray{ ManagementZoneRuleConditionAzureSkuComparisionArgs{...} } +type ManagementZoneRuleConditionAzureSkuComparisionArrayInput interface { + pulumi.Input + + ToManagementZoneRuleConditionAzureSkuComparisionArrayOutput() ManagementZoneRuleConditionAzureSkuComparisionArrayOutput + ToManagementZoneRuleConditionAzureSkuComparisionArrayOutputWithContext(context.Context) ManagementZoneRuleConditionAzureSkuComparisionArrayOutput +} + +type ManagementZoneRuleConditionAzureSkuComparisionArray []ManagementZoneRuleConditionAzureSkuComparisionInput + +func (ManagementZoneRuleConditionAzureSkuComparisionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionAzureSkuComparision)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionAzureSkuComparisionArray) ToManagementZoneRuleConditionAzureSkuComparisionArrayOutput() ManagementZoneRuleConditionAzureSkuComparisionArrayOutput { + return i.ToManagementZoneRuleConditionAzureSkuComparisionArrayOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionAzureSkuComparisionArray) ToManagementZoneRuleConditionAzureSkuComparisionArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureSkuComparisionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionAzureSkuComparisionArrayOutput) +} + +type ManagementZoneRuleConditionAzureSkuComparisionOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionAzureSkuComparisionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionAzureSkuComparision)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionAzureSkuComparisionOutput) ToManagementZoneRuleConditionAzureSkuComparisionOutput() ManagementZoneRuleConditionAzureSkuComparisionOutput { + return o +} + +func (o ManagementZoneRuleConditionAzureSkuComparisionOutput) ToManagementZoneRuleConditionAzureSkuComparisionOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureSkuComparisionOutput { + return o +} + +func (o ManagementZoneRuleConditionAzureSkuComparisionOutput) Negate() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionAzureSkuComparision) *bool { return v.Negate }).(pulumi.BoolPtrOutput) +} + +func (o ManagementZoneRuleConditionAzureSkuComparisionOutput) Operator() pulumi.StringOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionAzureSkuComparision) string { return v.Operator }).(pulumi.StringOutput) +} + +// Deprecated: The value of the attribute type is implicit, therefore shouldn't get specified +func (o ManagementZoneRuleConditionAzureSkuComparisionOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionAzureSkuComparision) *string { return v.Type }).(pulumi.StringPtrOutput) +} + +func (o ManagementZoneRuleConditionAzureSkuComparisionOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionAzureSkuComparision) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +} + +func (o ManagementZoneRuleConditionAzureSkuComparisionOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionAzureSkuComparision) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type ManagementZoneRuleConditionAzureSkuComparisionArrayOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionAzureSkuComparisionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionAzureSkuComparision)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionAzureSkuComparisionArrayOutput) ToManagementZoneRuleConditionAzureSkuComparisionArrayOutput() ManagementZoneRuleConditionAzureSkuComparisionArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionAzureSkuComparisionArrayOutput) ToManagementZoneRuleConditionAzureSkuComparisionArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureSkuComparisionArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionAzureSkuComparisionArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionAzureSkuComparisionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionAzureSkuComparision { + return vs[0].([]ManagementZoneRuleConditionAzureSkuComparision)[vs[1].(int)] + }).(ManagementZoneRuleConditionAzureSkuComparisionOutput) +} + +type ManagementZoneRuleConditionAzureSkus struct { + Negate *bool `pulumi:"negate"` + Operator string `pulumi:"operator"` + Unknowns *string `pulumi:"unknowns"` + Value *string `pulumi:"value"` +} + +// ManagementZoneRuleConditionAzureSkusInput is an input type that accepts ManagementZoneRuleConditionAzureSkusArgs and ManagementZoneRuleConditionAzureSkusOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionAzureSkusInput` via: +// +// ManagementZoneRuleConditionAzureSkusArgs{...} +type ManagementZoneRuleConditionAzureSkusInput interface { + pulumi.Input + + ToManagementZoneRuleConditionAzureSkusOutput() ManagementZoneRuleConditionAzureSkusOutput + ToManagementZoneRuleConditionAzureSkusOutputWithContext(context.Context) ManagementZoneRuleConditionAzureSkusOutput +} + +type ManagementZoneRuleConditionAzureSkusArgs struct { + Negate pulumi.BoolPtrInput `pulumi:"negate"` + Operator pulumi.StringInput `pulumi:"operator"` + Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (ManagementZoneRuleConditionAzureSkusArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionAzureSkus)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionAzureSkusArgs) ToManagementZoneRuleConditionAzureSkusOutput() ManagementZoneRuleConditionAzureSkusOutput { + return i.ToManagementZoneRuleConditionAzureSkusOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionAzureSkusArgs) ToManagementZoneRuleConditionAzureSkusOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureSkusOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionAzureSkusOutput) +} + +// ManagementZoneRuleConditionAzureSkusArrayInput is an input type that accepts ManagementZoneRuleConditionAzureSkusArray and ManagementZoneRuleConditionAzureSkusArrayOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionAzureSkusArrayInput` via: +// +// ManagementZoneRuleConditionAzureSkusArray{ ManagementZoneRuleConditionAzureSkusArgs{...} } +type ManagementZoneRuleConditionAzureSkusArrayInput interface { + pulumi.Input + + ToManagementZoneRuleConditionAzureSkusArrayOutput() ManagementZoneRuleConditionAzureSkusArrayOutput + ToManagementZoneRuleConditionAzureSkusArrayOutputWithContext(context.Context) ManagementZoneRuleConditionAzureSkusArrayOutput +} + +type ManagementZoneRuleConditionAzureSkusArray []ManagementZoneRuleConditionAzureSkusInput + +func (ManagementZoneRuleConditionAzureSkusArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionAzureSkus)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionAzureSkusArray) ToManagementZoneRuleConditionAzureSkusArrayOutput() ManagementZoneRuleConditionAzureSkusArrayOutput { + return i.ToManagementZoneRuleConditionAzureSkusArrayOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionAzureSkusArray) ToManagementZoneRuleConditionAzureSkusArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureSkusArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionAzureSkusArrayOutput) +} + +type ManagementZoneRuleConditionAzureSkusOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionAzureSkusOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionAzureSkus)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionAzureSkusOutput) ToManagementZoneRuleConditionAzureSkusOutput() ManagementZoneRuleConditionAzureSkusOutput { + return o +} + +func (o ManagementZoneRuleConditionAzureSkusOutput) ToManagementZoneRuleConditionAzureSkusOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureSkusOutput { + return o +} + +func (o ManagementZoneRuleConditionAzureSkusOutput) Negate() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionAzureSkus) *bool { return v.Negate }).(pulumi.BoolPtrOutput) +} + +func (o ManagementZoneRuleConditionAzureSkusOutput) Operator() pulumi.StringOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionAzureSkus) string { return v.Operator }).(pulumi.StringOutput) +} + +func (o ManagementZoneRuleConditionAzureSkusOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionAzureSkus) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +} + +func (o ManagementZoneRuleConditionAzureSkusOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionAzureSkus) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type ManagementZoneRuleConditionAzureSkusArrayOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionAzureSkusArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionAzureSkus)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionAzureSkusArrayOutput) ToManagementZoneRuleConditionAzureSkusArrayOutput() ManagementZoneRuleConditionAzureSkusArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionAzureSkusArrayOutput) ToManagementZoneRuleConditionAzureSkusArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionAzureSkusArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionAzureSkusArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionAzureSkusOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionAzureSkus { + return vs[0].([]ManagementZoneRuleConditionAzureSkus)[vs[1].(int)] + }).(ManagementZoneRuleConditionAzureSkusOutput) +} + +type ManagementZoneRuleConditionBaseComparisonBasic struct { + Negate *bool `pulumi:"negate"` + Type string `pulumi:"type"` + Unknowns *string `pulumi:"unknowns"` +} + +// ManagementZoneRuleConditionBaseComparisonBasicInput is an input type that accepts ManagementZoneRuleConditionBaseComparisonBasicArgs and ManagementZoneRuleConditionBaseComparisonBasicOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionBaseComparisonBasicInput` via: +// +// ManagementZoneRuleConditionBaseComparisonBasicArgs{...} +type ManagementZoneRuleConditionBaseComparisonBasicInput interface { + pulumi.Input + + ToManagementZoneRuleConditionBaseComparisonBasicOutput() ManagementZoneRuleConditionBaseComparisonBasicOutput + ToManagementZoneRuleConditionBaseComparisonBasicOutputWithContext(context.Context) ManagementZoneRuleConditionBaseComparisonBasicOutput +} + +type ManagementZoneRuleConditionBaseComparisonBasicArgs struct { + Negate pulumi.BoolPtrInput `pulumi:"negate"` + Type pulumi.StringInput `pulumi:"type"` + Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` +} + +func (ManagementZoneRuleConditionBaseComparisonBasicArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionBaseComparisonBasic)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionBaseComparisonBasicArgs) ToManagementZoneRuleConditionBaseComparisonBasicOutput() ManagementZoneRuleConditionBaseComparisonBasicOutput { + return i.ToManagementZoneRuleConditionBaseComparisonBasicOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionBaseComparisonBasicArgs) ToManagementZoneRuleConditionBaseComparisonBasicOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBaseComparisonBasicOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionBaseComparisonBasicOutput) +} + +// ManagementZoneRuleConditionBaseComparisonBasicArrayInput is an input type that accepts ManagementZoneRuleConditionBaseComparisonBasicArray and ManagementZoneRuleConditionBaseComparisonBasicArrayOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionBaseComparisonBasicArrayInput` via: +// +// ManagementZoneRuleConditionBaseComparisonBasicArray{ ManagementZoneRuleConditionBaseComparisonBasicArgs{...} } +type ManagementZoneRuleConditionBaseComparisonBasicArrayInput interface { + pulumi.Input + + ToManagementZoneRuleConditionBaseComparisonBasicArrayOutput() ManagementZoneRuleConditionBaseComparisonBasicArrayOutput + ToManagementZoneRuleConditionBaseComparisonBasicArrayOutputWithContext(context.Context) ManagementZoneRuleConditionBaseComparisonBasicArrayOutput +} + +type ManagementZoneRuleConditionBaseComparisonBasicArray []ManagementZoneRuleConditionBaseComparisonBasicInput + +func (ManagementZoneRuleConditionBaseComparisonBasicArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionBaseComparisonBasic)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionBaseComparisonBasicArray) ToManagementZoneRuleConditionBaseComparisonBasicArrayOutput() ManagementZoneRuleConditionBaseComparisonBasicArrayOutput { + return i.ToManagementZoneRuleConditionBaseComparisonBasicArrayOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionBaseComparisonBasicArray) ToManagementZoneRuleConditionBaseComparisonBasicArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBaseComparisonBasicArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionBaseComparisonBasicArrayOutput) +} + +type ManagementZoneRuleConditionBaseComparisonBasicOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionBaseComparisonBasicOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionBaseComparisonBasic)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionBaseComparisonBasicOutput) ToManagementZoneRuleConditionBaseComparisonBasicOutput() ManagementZoneRuleConditionBaseComparisonBasicOutput { + return o +} + +func (o ManagementZoneRuleConditionBaseComparisonBasicOutput) ToManagementZoneRuleConditionBaseComparisonBasicOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBaseComparisonBasicOutput { + return o +} + +func (o ManagementZoneRuleConditionBaseComparisonBasicOutput) Negate() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionBaseComparisonBasic) *bool { return v.Negate }).(pulumi.BoolPtrOutput) +} + +func (o ManagementZoneRuleConditionBaseComparisonBasicOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionBaseComparisonBasic) string { return v.Type }).(pulumi.StringOutput) +} + +func (o ManagementZoneRuleConditionBaseComparisonBasicOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionBaseComparisonBasic) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +} + +type ManagementZoneRuleConditionBaseComparisonBasicArrayOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionBaseComparisonBasicArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionBaseComparisonBasic)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionBaseComparisonBasicArrayOutput) ToManagementZoneRuleConditionBaseComparisonBasicArrayOutput() ManagementZoneRuleConditionBaseComparisonBasicArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionBaseComparisonBasicArrayOutput) ToManagementZoneRuleConditionBaseComparisonBasicArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBaseComparisonBasicArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionBaseComparisonBasicArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionBaseComparisonBasicOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionBaseComparisonBasic { + return vs[0].([]ManagementZoneRuleConditionBaseComparisonBasic)[vs[1].(int)] + }).(ManagementZoneRuleConditionBaseComparisonBasicOutput) +} + +type ManagementZoneRuleConditionBaseConditionKey struct { + Attribute string `pulumi:"attribute"` + Type *string `pulumi:"type"` + Unknowns *string `pulumi:"unknowns"` +} + +// ManagementZoneRuleConditionBaseConditionKeyInput is an input type that accepts ManagementZoneRuleConditionBaseConditionKeyArgs and ManagementZoneRuleConditionBaseConditionKeyOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionBaseConditionKeyInput` via: +// +// ManagementZoneRuleConditionBaseConditionKeyArgs{...} +type ManagementZoneRuleConditionBaseConditionKeyInput interface { + pulumi.Input + + ToManagementZoneRuleConditionBaseConditionKeyOutput() ManagementZoneRuleConditionBaseConditionKeyOutput + ToManagementZoneRuleConditionBaseConditionKeyOutputWithContext(context.Context) ManagementZoneRuleConditionBaseConditionKeyOutput +} + +type ManagementZoneRuleConditionBaseConditionKeyArgs struct { + Attribute pulumi.StringInput `pulumi:"attribute"` + Type pulumi.StringPtrInput `pulumi:"type"` + Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` +} + +func (ManagementZoneRuleConditionBaseConditionKeyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionBaseConditionKey)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionBaseConditionKeyArgs) ToManagementZoneRuleConditionBaseConditionKeyOutput() ManagementZoneRuleConditionBaseConditionKeyOutput { + return i.ToManagementZoneRuleConditionBaseConditionKeyOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionBaseConditionKeyArgs) ToManagementZoneRuleConditionBaseConditionKeyOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBaseConditionKeyOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionBaseConditionKeyOutput) +} + +// ManagementZoneRuleConditionBaseConditionKeyArrayInput is an input type that accepts ManagementZoneRuleConditionBaseConditionKeyArray and ManagementZoneRuleConditionBaseConditionKeyArrayOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionBaseConditionKeyArrayInput` via: +// +// ManagementZoneRuleConditionBaseConditionKeyArray{ ManagementZoneRuleConditionBaseConditionKeyArgs{...} } +type ManagementZoneRuleConditionBaseConditionKeyArrayInput interface { + pulumi.Input + + ToManagementZoneRuleConditionBaseConditionKeyArrayOutput() ManagementZoneRuleConditionBaseConditionKeyArrayOutput + ToManagementZoneRuleConditionBaseConditionKeyArrayOutputWithContext(context.Context) ManagementZoneRuleConditionBaseConditionKeyArrayOutput +} + +type ManagementZoneRuleConditionBaseConditionKeyArray []ManagementZoneRuleConditionBaseConditionKeyInput + +func (ManagementZoneRuleConditionBaseConditionKeyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionBaseConditionKey)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionBaseConditionKeyArray) ToManagementZoneRuleConditionBaseConditionKeyArrayOutput() ManagementZoneRuleConditionBaseConditionKeyArrayOutput { + return i.ToManagementZoneRuleConditionBaseConditionKeyArrayOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionBaseConditionKeyArray) ToManagementZoneRuleConditionBaseConditionKeyArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBaseConditionKeyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionBaseConditionKeyArrayOutput) +} + +type ManagementZoneRuleConditionBaseConditionKeyOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionBaseConditionKeyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionBaseConditionKey)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionBaseConditionKeyOutput) ToManagementZoneRuleConditionBaseConditionKeyOutput() ManagementZoneRuleConditionBaseConditionKeyOutput { + return o +} + +func (o ManagementZoneRuleConditionBaseConditionKeyOutput) ToManagementZoneRuleConditionBaseConditionKeyOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBaseConditionKeyOutput { + return o +} + +func (o ManagementZoneRuleConditionBaseConditionKeyOutput) Attribute() pulumi.StringOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionBaseConditionKey) string { return v.Attribute }).(pulumi.StringOutput) +} + +func (o ManagementZoneRuleConditionBaseConditionKeyOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionBaseConditionKey) *string { return v.Type }).(pulumi.StringPtrOutput) +} + +func (o ManagementZoneRuleConditionBaseConditionKeyOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionBaseConditionKey) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +} + +type ManagementZoneRuleConditionBaseConditionKeyArrayOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionBaseConditionKeyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionBaseConditionKey)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionBaseConditionKeyArrayOutput) ToManagementZoneRuleConditionBaseConditionKeyArrayOutput() ManagementZoneRuleConditionBaseConditionKeyArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionBaseConditionKeyArrayOutput) ToManagementZoneRuleConditionBaseConditionKeyArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBaseConditionKeyArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionBaseConditionKeyArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionBaseConditionKeyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionBaseConditionKey { + return vs[0].([]ManagementZoneRuleConditionBaseConditionKey)[vs[1].(int)] + }).(ManagementZoneRuleConditionBaseConditionKeyOutput) +} + +type ManagementZoneRuleConditionBitness struct { + Negate *bool `pulumi:"negate"` + Operator string `pulumi:"operator"` + Unknowns *string `pulumi:"unknowns"` + Value *string `pulumi:"value"` +} + +// ManagementZoneRuleConditionBitnessInput is an input type that accepts ManagementZoneRuleConditionBitnessArgs and ManagementZoneRuleConditionBitnessOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionBitnessInput` via: +// +// ManagementZoneRuleConditionBitnessArgs{...} +type ManagementZoneRuleConditionBitnessInput interface { + pulumi.Input + + ToManagementZoneRuleConditionBitnessOutput() ManagementZoneRuleConditionBitnessOutput + ToManagementZoneRuleConditionBitnessOutputWithContext(context.Context) ManagementZoneRuleConditionBitnessOutput +} + +type ManagementZoneRuleConditionBitnessArgs struct { + Negate pulumi.BoolPtrInput `pulumi:"negate"` + Operator pulumi.StringInput `pulumi:"operator"` + Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (ManagementZoneRuleConditionBitnessArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionBitness)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionBitnessArgs) ToManagementZoneRuleConditionBitnessOutput() ManagementZoneRuleConditionBitnessOutput { + return i.ToManagementZoneRuleConditionBitnessOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionBitnessArgs) ToManagementZoneRuleConditionBitnessOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBitnessOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionBitnessOutput) +} + +// ManagementZoneRuleConditionBitnessArrayInput is an input type that accepts ManagementZoneRuleConditionBitnessArray and ManagementZoneRuleConditionBitnessArrayOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionBitnessArrayInput` via: +// +// ManagementZoneRuleConditionBitnessArray{ ManagementZoneRuleConditionBitnessArgs{...} } +type ManagementZoneRuleConditionBitnessArrayInput interface { + pulumi.Input + + ToManagementZoneRuleConditionBitnessArrayOutput() ManagementZoneRuleConditionBitnessArrayOutput + ToManagementZoneRuleConditionBitnessArrayOutputWithContext(context.Context) ManagementZoneRuleConditionBitnessArrayOutput +} + +type ManagementZoneRuleConditionBitnessArray []ManagementZoneRuleConditionBitnessInput + +func (ManagementZoneRuleConditionBitnessArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionBitness)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionBitnessArray) ToManagementZoneRuleConditionBitnessArrayOutput() ManagementZoneRuleConditionBitnessArrayOutput { + return i.ToManagementZoneRuleConditionBitnessArrayOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionBitnessArray) ToManagementZoneRuleConditionBitnessArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBitnessArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionBitnessArrayOutput) +} + +type ManagementZoneRuleConditionBitnessOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionBitnessOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionBitness)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionBitnessOutput) ToManagementZoneRuleConditionBitnessOutput() ManagementZoneRuleConditionBitnessOutput { + return o +} + +func (o ManagementZoneRuleConditionBitnessOutput) ToManagementZoneRuleConditionBitnessOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBitnessOutput { + return o +} + +func (o ManagementZoneRuleConditionBitnessOutput) Negate() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionBitness) *bool { return v.Negate }).(pulumi.BoolPtrOutput) +} + +func (o ManagementZoneRuleConditionBitnessOutput) Operator() pulumi.StringOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionBitness) string { return v.Operator }).(pulumi.StringOutput) +} + +func (o ManagementZoneRuleConditionBitnessOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionBitness) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +} + +func (o ManagementZoneRuleConditionBitnessOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionBitness) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type ManagementZoneRuleConditionBitnessArrayOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionBitnessArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionBitness)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionBitnessArrayOutput) ToManagementZoneRuleConditionBitnessArrayOutput() ManagementZoneRuleConditionBitnessArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionBitnessArrayOutput) ToManagementZoneRuleConditionBitnessArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBitnessArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionBitnessArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionBitnessOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionBitness { + return vs[0].([]ManagementZoneRuleConditionBitness)[vs[1].(int)] + }).(ManagementZoneRuleConditionBitnessOutput) +} + +type ManagementZoneRuleConditionBitnessComparision struct { + Negate *bool `pulumi:"negate"` + Operator string `pulumi:"operator"` + // Deprecated: The value of the attribute type is implicit, therefore shouldn't get specified + Type *string `pulumi:"type"` + Unknowns *string `pulumi:"unknowns"` + Value *string `pulumi:"value"` +} + +// ManagementZoneRuleConditionBitnessComparisionInput is an input type that accepts ManagementZoneRuleConditionBitnessComparisionArgs and ManagementZoneRuleConditionBitnessComparisionOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionBitnessComparisionInput` via: +// +// ManagementZoneRuleConditionBitnessComparisionArgs{...} +type ManagementZoneRuleConditionBitnessComparisionInput interface { + pulumi.Input + + ToManagementZoneRuleConditionBitnessComparisionOutput() ManagementZoneRuleConditionBitnessComparisionOutput + ToManagementZoneRuleConditionBitnessComparisionOutputWithContext(context.Context) ManagementZoneRuleConditionBitnessComparisionOutput +} + +type ManagementZoneRuleConditionBitnessComparisionArgs struct { + Negate pulumi.BoolPtrInput `pulumi:"negate"` + Operator pulumi.StringInput `pulumi:"operator"` + // Deprecated: The value of the attribute type is implicit, therefore shouldn't get specified + Type pulumi.StringPtrInput `pulumi:"type"` + Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (ManagementZoneRuleConditionBitnessComparisionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionBitnessComparision)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionBitnessComparisionArgs) ToManagementZoneRuleConditionBitnessComparisionOutput() ManagementZoneRuleConditionBitnessComparisionOutput { + return i.ToManagementZoneRuleConditionBitnessComparisionOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionBitnessComparisionArgs) ToManagementZoneRuleConditionBitnessComparisionOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBitnessComparisionOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionBitnessComparisionOutput) +} + +// ManagementZoneRuleConditionBitnessComparisionArrayInput is an input type that accepts ManagementZoneRuleConditionBitnessComparisionArray and ManagementZoneRuleConditionBitnessComparisionArrayOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionBitnessComparisionArrayInput` via: +// +// ManagementZoneRuleConditionBitnessComparisionArray{ ManagementZoneRuleConditionBitnessComparisionArgs{...} } +type ManagementZoneRuleConditionBitnessComparisionArrayInput interface { + pulumi.Input + + ToManagementZoneRuleConditionBitnessComparisionArrayOutput() ManagementZoneRuleConditionBitnessComparisionArrayOutput + ToManagementZoneRuleConditionBitnessComparisionArrayOutputWithContext(context.Context) ManagementZoneRuleConditionBitnessComparisionArrayOutput +} + +type ManagementZoneRuleConditionBitnessComparisionArray []ManagementZoneRuleConditionBitnessComparisionInput + +func (ManagementZoneRuleConditionBitnessComparisionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionBitnessComparision)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionBitnessComparisionArray) ToManagementZoneRuleConditionBitnessComparisionArrayOutput() ManagementZoneRuleConditionBitnessComparisionArrayOutput { + return i.ToManagementZoneRuleConditionBitnessComparisionArrayOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionBitnessComparisionArray) ToManagementZoneRuleConditionBitnessComparisionArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBitnessComparisionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionBitnessComparisionArrayOutput) +} + +type ManagementZoneRuleConditionBitnessComparisionOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionBitnessComparisionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionBitnessComparision)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionBitnessComparisionOutput) ToManagementZoneRuleConditionBitnessComparisionOutput() ManagementZoneRuleConditionBitnessComparisionOutput { + return o +} + +func (o ManagementZoneRuleConditionBitnessComparisionOutput) ToManagementZoneRuleConditionBitnessComparisionOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBitnessComparisionOutput { + return o +} + +func (o ManagementZoneRuleConditionBitnessComparisionOutput) Negate() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionBitnessComparision) *bool { return v.Negate }).(pulumi.BoolPtrOutput) +} + +func (o ManagementZoneRuleConditionBitnessComparisionOutput) Operator() pulumi.StringOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionBitnessComparision) string { return v.Operator }).(pulumi.StringOutput) +} + +// Deprecated: The value of the attribute type is implicit, therefore shouldn't get specified +func (o ManagementZoneRuleConditionBitnessComparisionOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionBitnessComparision) *string { return v.Type }).(pulumi.StringPtrOutput) +} + +func (o ManagementZoneRuleConditionBitnessComparisionOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionBitnessComparision) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +} + +func (o ManagementZoneRuleConditionBitnessComparisionOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionBitnessComparision) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type ManagementZoneRuleConditionBitnessComparisionArrayOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionBitnessComparisionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionBitnessComparision)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionBitnessComparisionArrayOutput) ToManagementZoneRuleConditionBitnessComparisionArrayOutput() ManagementZoneRuleConditionBitnessComparisionArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionBitnessComparisionArrayOutput) ToManagementZoneRuleConditionBitnessComparisionArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionBitnessComparisionArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionBitnessComparisionArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionBitnessComparisionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionBitnessComparision { + return vs[0].([]ManagementZoneRuleConditionBitnessComparision)[vs[1].(int)] + }).(ManagementZoneRuleConditionBitnessComparisionOutput) +} + +type ManagementZoneRuleConditionCloudType struct { + Negate *bool `pulumi:"negate"` + Operator string `pulumi:"operator"` + Unknowns *string `pulumi:"unknowns"` + Value *string `pulumi:"value"` +} + +// ManagementZoneRuleConditionCloudTypeInput is an input type that accepts ManagementZoneRuleConditionCloudTypeArgs and ManagementZoneRuleConditionCloudTypeOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionCloudTypeInput` via: +// +// ManagementZoneRuleConditionCloudTypeArgs{...} +type ManagementZoneRuleConditionCloudTypeInput interface { + pulumi.Input + + ToManagementZoneRuleConditionCloudTypeOutput() ManagementZoneRuleConditionCloudTypeOutput + ToManagementZoneRuleConditionCloudTypeOutputWithContext(context.Context) ManagementZoneRuleConditionCloudTypeOutput +} + +type ManagementZoneRuleConditionCloudTypeArgs struct { + Negate pulumi.BoolPtrInput `pulumi:"negate"` + Operator pulumi.StringInput `pulumi:"operator"` + Unknowns pulumi.StringPtrInput `pulumi:"unknowns"` + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (ManagementZoneRuleConditionCloudTypeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionCloudType)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionCloudTypeArgs) ToManagementZoneRuleConditionCloudTypeOutput() ManagementZoneRuleConditionCloudTypeOutput { + return i.ToManagementZoneRuleConditionCloudTypeOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionCloudTypeArgs) ToManagementZoneRuleConditionCloudTypeOutputWithContext(ctx context.Context) ManagementZoneRuleConditionCloudTypeOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionCloudTypeOutput) +} + +// ManagementZoneRuleConditionCloudTypeArrayInput is an input type that accepts ManagementZoneRuleConditionCloudTypeArray and ManagementZoneRuleConditionCloudTypeArrayOutput values. +// You can construct a concrete instance of `ManagementZoneRuleConditionCloudTypeArrayInput` via: +// +// ManagementZoneRuleConditionCloudTypeArray{ ManagementZoneRuleConditionCloudTypeArgs{...} } +type ManagementZoneRuleConditionCloudTypeArrayInput interface { + pulumi.Input + + ToManagementZoneRuleConditionCloudTypeArrayOutput() ManagementZoneRuleConditionCloudTypeArrayOutput + ToManagementZoneRuleConditionCloudTypeArrayOutputWithContext(context.Context) ManagementZoneRuleConditionCloudTypeArrayOutput +} + +type ManagementZoneRuleConditionCloudTypeArray []ManagementZoneRuleConditionCloudTypeInput + +func (ManagementZoneRuleConditionCloudTypeArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionCloudType)(nil)).Elem() +} + +func (i ManagementZoneRuleConditionCloudTypeArray) ToManagementZoneRuleConditionCloudTypeArrayOutput() ManagementZoneRuleConditionCloudTypeArrayOutput { + return i.ToManagementZoneRuleConditionCloudTypeArrayOutputWithContext(context.Background()) +} + +func (i ManagementZoneRuleConditionCloudTypeArray) ToManagementZoneRuleConditionCloudTypeArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionCloudTypeArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementZoneRuleConditionCloudTypeArrayOutput) +} + +type ManagementZoneRuleConditionCloudTypeOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionCloudTypeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementZoneRuleConditionCloudType)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionCloudTypeOutput) ToManagementZoneRuleConditionCloudTypeOutput() ManagementZoneRuleConditionCloudTypeOutput { + return o +} + +func (o ManagementZoneRuleConditionCloudTypeOutput) ToManagementZoneRuleConditionCloudTypeOutputWithContext(ctx context.Context) ManagementZoneRuleConditionCloudTypeOutput { + return o +} + +func (o ManagementZoneRuleConditionCloudTypeOutput) Negate() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionCloudType) *bool { return v.Negate }).(pulumi.BoolPtrOutput) +} + +func (o ManagementZoneRuleConditionCloudTypeOutput) Operator() pulumi.StringOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionCloudType) string { return v.Operator }).(pulumi.StringOutput) +} + +func (o ManagementZoneRuleConditionCloudTypeOutput) Unknowns() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionCloudType) *string { return v.Unknowns }).(pulumi.StringPtrOutput) +} + +func (o ManagementZoneRuleConditionCloudTypeOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementZoneRuleConditionCloudType) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type ManagementZoneRuleConditionCloudTypeArrayOutput struct{ *pulumi.OutputState } + +func (ManagementZoneRuleConditionCloudTypeArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementZoneRuleConditionCloudType)(nil)).Elem() +} + +func (o ManagementZoneRuleConditionCloudTypeArrayOutput) ToManagementZoneRuleConditionCloudTypeArrayOutput() ManagementZoneRuleConditionCloudTypeArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionCloudTypeArrayOutput) ToManagementZoneRuleConditionCloudTypeArrayOutputWithContext(ctx context.Context) ManagementZoneRuleConditionCloudTypeArrayOutput { + return o +} + +func (o ManagementZoneRuleConditionCloudTypeArrayOutput) Index(i pulumi.IntInput) ManagementZoneRuleConditionCloudTypeOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementZoneRuleConditionCloudType { + return vs[0].([]ManagementZoneRuleConditionCloudType)[vs[1].(int)] + }).(ManagementZoneRuleConditionCloudTypeOutput) +} + type ManagementZoneRuleConditionCloudTypeComparison struct { Negate *bool `pulumi:"negate"` Operator string `pulumi:"operator"` @@ -51507,6 +53695,498 @@ func (o WebApplicationXhrActionApdexSettingsPtrOutput) ToleratedThreshold() pulu }).(pulumi.IntPtrOutput) } +type WebhookNotificationHeaders struct { + // An additional HTTP Header to include when sending requests + Headers []WebhookNotificationHeadersHeader `pulumi:"headers"` +} + +// WebhookNotificationHeadersInput is an input type that accepts WebhookNotificationHeadersArgs and WebhookNotificationHeadersOutput values. +// You can construct a concrete instance of `WebhookNotificationHeadersInput` via: +// +// WebhookNotificationHeadersArgs{...} +type WebhookNotificationHeadersInput interface { + pulumi.Input + + ToWebhookNotificationHeadersOutput() WebhookNotificationHeadersOutput + ToWebhookNotificationHeadersOutputWithContext(context.Context) WebhookNotificationHeadersOutput +} + +type WebhookNotificationHeadersArgs struct { + // An additional HTTP Header to include when sending requests + Headers WebhookNotificationHeadersHeaderArrayInput `pulumi:"headers"` +} + +func (WebhookNotificationHeadersArgs) ElementType() reflect.Type { + return reflect.TypeOf((*WebhookNotificationHeaders)(nil)).Elem() +} + +func (i WebhookNotificationHeadersArgs) ToWebhookNotificationHeadersOutput() WebhookNotificationHeadersOutput { + return i.ToWebhookNotificationHeadersOutputWithContext(context.Background()) +} + +func (i WebhookNotificationHeadersArgs) ToWebhookNotificationHeadersOutputWithContext(ctx context.Context) WebhookNotificationHeadersOutput { + return pulumi.ToOutputWithContext(ctx, i).(WebhookNotificationHeadersOutput) +} + +func (i WebhookNotificationHeadersArgs) ToWebhookNotificationHeadersPtrOutput() WebhookNotificationHeadersPtrOutput { + return i.ToWebhookNotificationHeadersPtrOutputWithContext(context.Background()) +} + +func (i WebhookNotificationHeadersArgs) ToWebhookNotificationHeadersPtrOutputWithContext(ctx context.Context) WebhookNotificationHeadersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(WebhookNotificationHeadersOutput).ToWebhookNotificationHeadersPtrOutputWithContext(ctx) +} + +// WebhookNotificationHeadersPtrInput is an input type that accepts WebhookNotificationHeadersArgs, WebhookNotificationHeadersPtr and WebhookNotificationHeadersPtrOutput values. +// You can construct a concrete instance of `WebhookNotificationHeadersPtrInput` via: +// +// WebhookNotificationHeadersArgs{...} +// +// or: +// +// nil +type WebhookNotificationHeadersPtrInput interface { + pulumi.Input + + ToWebhookNotificationHeadersPtrOutput() WebhookNotificationHeadersPtrOutput + ToWebhookNotificationHeadersPtrOutputWithContext(context.Context) WebhookNotificationHeadersPtrOutput +} + +type webhookNotificationHeadersPtrType WebhookNotificationHeadersArgs + +func WebhookNotificationHeadersPtr(v *WebhookNotificationHeadersArgs) WebhookNotificationHeadersPtrInput { + return (*webhookNotificationHeadersPtrType)(v) +} + +func (*webhookNotificationHeadersPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**WebhookNotificationHeaders)(nil)).Elem() +} + +func (i *webhookNotificationHeadersPtrType) ToWebhookNotificationHeadersPtrOutput() WebhookNotificationHeadersPtrOutput { + return i.ToWebhookNotificationHeadersPtrOutputWithContext(context.Background()) +} + +func (i *webhookNotificationHeadersPtrType) ToWebhookNotificationHeadersPtrOutputWithContext(ctx context.Context) WebhookNotificationHeadersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(WebhookNotificationHeadersPtrOutput) +} + +type WebhookNotificationHeadersOutput struct{ *pulumi.OutputState } + +func (WebhookNotificationHeadersOutput) ElementType() reflect.Type { + return reflect.TypeOf((*WebhookNotificationHeaders)(nil)).Elem() +} + +func (o WebhookNotificationHeadersOutput) ToWebhookNotificationHeadersOutput() WebhookNotificationHeadersOutput { + return o +} + +func (o WebhookNotificationHeadersOutput) ToWebhookNotificationHeadersOutputWithContext(ctx context.Context) WebhookNotificationHeadersOutput { + return o +} + +func (o WebhookNotificationHeadersOutput) ToWebhookNotificationHeadersPtrOutput() WebhookNotificationHeadersPtrOutput { + return o.ToWebhookNotificationHeadersPtrOutputWithContext(context.Background()) +} + +func (o WebhookNotificationHeadersOutput) ToWebhookNotificationHeadersPtrOutputWithContext(ctx context.Context) WebhookNotificationHeadersPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v WebhookNotificationHeaders) *WebhookNotificationHeaders { + return &v + }).(WebhookNotificationHeadersPtrOutput) +} + +// An additional HTTP Header to include when sending requests +func (o WebhookNotificationHeadersOutput) Headers() WebhookNotificationHeadersHeaderArrayOutput { + return o.ApplyT(func(v WebhookNotificationHeaders) []WebhookNotificationHeadersHeader { return v.Headers }).(WebhookNotificationHeadersHeaderArrayOutput) +} + +type WebhookNotificationHeadersPtrOutput struct{ *pulumi.OutputState } + +func (WebhookNotificationHeadersPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**WebhookNotificationHeaders)(nil)).Elem() +} + +func (o WebhookNotificationHeadersPtrOutput) ToWebhookNotificationHeadersPtrOutput() WebhookNotificationHeadersPtrOutput { + return o +} + +func (o WebhookNotificationHeadersPtrOutput) ToWebhookNotificationHeadersPtrOutputWithContext(ctx context.Context) WebhookNotificationHeadersPtrOutput { + return o +} + +func (o WebhookNotificationHeadersPtrOutput) Elem() WebhookNotificationHeadersOutput { + return o.ApplyT(func(v *WebhookNotificationHeaders) WebhookNotificationHeaders { + if v != nil { + return *v + } + var ret WebhookNotificationHeaders + return ret + }).(WebhookNotificationHeadersOutput) +} + +// An additional HTTP Header to include when sending requests +func (o WebhookNotificationHeadersPtrOutput) Headers() WebhookNotificationHeadersHeaderArrayOutput { + return o.ApplyT(func(v *WebhookNotificationHeaders) []WebhookNotificationHeadersHeader { + if v == nil { + return nil + } + return v.Headers + }).(WebhookNotificationHeadersHeaderArrayOutput) +} + +type WebhookNotificationHeadersHeader struct { + // The name of the notification configuration + Name string `pulumi:"name"` + SecretValue *string `pulumi:"secretValue"` + Value *string `pulumi:"value"` +} + +// WebhookNotificationHeadersHeaderInput is an input type that accepts WebhookNotificationHeadersHeaderArgs and WebhookNotificationHeadersHeaderOutput values. +// You can construct a concrete instance of `WebhookNotificationHeadersHeaderInput` via: +// +// WebhookNotificationHeadersHeaderArgs{...} +type WebhookNotificationHeadersHeaderInput interface { + pulumi.Input + + ToWebhookNotificationHeadersHeaderOutput() WebhookNotificationHeadersHeaderOutput + ToWebhookNotificationHeadersHeaderOutputWithContext(context.Context) WebhookNotificationHeadersHeaderOutput +} + +type WebhookNotificationHeadersHeaderArgs struct { + // The name of the notification configuration + Name pulumi.StringInput `pulumi:"name"` + SecretValue pulumi.StringPtrInput `pulumi:"secretValue"` + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (WebhookNotificationHeadersHeaderArgs) ElementType() reflect.Type { + return reflect.TypeOf((*WebhookNotificationHeadersHeader)(nil)).Elem() +} + +func (i WebhookNotificationHeadersHeaderArgs) ToWebhookNotificationHeadersHeaderOutput() WebhookNotificationHeadersHeaderOutput { + return i.ToWebhookNotificationHeadersHeaderOutputWithContext(context.Background()) +} + +func (i WebhookNotificationHeadersHeaderArgs) ToWebhookNotificationHeadersHeaderOutputWithContext(ctx context.Context) WebhookNotificationHeadersHeaderOutput { + return pulumi.ToOutputWithContext(ctx, i).(WebhookNotificationHeadersHeaderOutput) +} + +// WebhookNotificationHeadersHeaderArrayInput is an input type that accepts WebhookNotificationHeadersHeaderArray and WebhookNotificationHeadersHeaderArrayOutput values. +// You can construct a concrete instance of `WebhookNotificationHeadersHeaderArrayInput` via: +// +// WebhookNotificationHeadersHeaderArray{ WebhookNotificationHeadersHeaderArgs{...} } +type WebhookNotificationHeadersHeaderArrayInput interface { + pulumi.Input + + ToWebhookNotificationHeadersHeaderArrayOutput() WebhookNotificationHeadersHeaderArrayOutput + ToWebhookNotificationHeadersHeaderArrayOutputWithContext(context.Context) WebhookNotificationHeadersHeaderArrayOutput +} + +type WebhookNotificationHeadersHeaderArray []WebhookNotificationHeadersHeaderInput + +func (WebhookNotificationHeadersHeaderArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]WebhookNotificationHeadersHeader)(nil)).Elem() +} + +func (i WebhookNotificationHeadersHeaderArray) ToWebhookNotificationHeadersHeaderArrayOutput() WebhookNotificationHeadersHeaderArrayOutput { + return i.ToWebhookNotificationHeadersHeaderArrayOutputWithContext(context.Background()) +} + +func (i WebhookNotificationHeadersHeaderArray) ToWebhookNotificationHeadersHeaderArrayOutputWithContext(ctx context.Context) WebhookNotificationHeadersHeaderArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(WebhookNotificationHeadersHeaderArrayOutput) +} + +type WebhookNotificationHeadersHeaderOutput struct{ *pulumi.OutputState } + +func (WebhookNotificationHeadersHeaderOutput) ElementType() reflect.Type { + return reflect.TypeOf((*WebhookNotificationHeadersHeader)(nil)).Elem() +} + +func (o WebhookNotificationHeadersHeaderOutput) ToWebhookNotificationHeadersHeaderOutput() WebhookNotificationHeadersHeaderOutput { + return o +} + +func (o WebhookNotificationHeadersHeaderOutput) ToWebhookNotificationHeadersHeaderOutputWithContext(ctx context.Context) WebhookNotificationHeadersHeaderOutput { + return o +} + +// The name of the notification configuration +func (o WebhookNotificationHeadersHeaderOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v WebhookNotificationHeadersHeader) string { return v.Name }).(pulumi.StringOutput) +} + +func (o WebhookNotificationHeadersHeaderOutput) SecretValue() pulumi.StringPtrOutput { + return o.ApplyT(func(v WebhookNotificationHeadersHeader) *string { return v.SecretValue }).(pulumi.StringPtrOutput) +} + +func (o WebhookNotificationHeadersHeaderOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v WebhookNotificationHeadersHeader) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type WebhookNotificationHeadersHeaderArrayOutput struct{ *pulumi.OutputState } + +func (WebhookNotificationHeadersHeaderArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]WebhookNotificationHeadersHeader)(nil)).Elem() +} + +func (o WebhookNotificationHeadersHeaderArrayOutput) ToWebhookNotificationHeadersHeaderArrayOutput() WebhookNotificationHeadersHeaderArrayOutput { + return o +} + +func (o WebhookNotificationHeadersHeaderArrayOutput) ToWebhookNotificationHeadersHeaderArrayOutputWithContext(ctx context.Context) WebhookNotificationHeadersHeaderArrayOutput { + return o +} + +func (o WebhookNotificationHeadersHeaderArrayOutput) Index(i pulumi.IntInput) WebhookNotificationHeadersHeaderOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) WebhookNotificationHeadersHeader { + return vs[0].([]WebhookNotificationHeadersHeader)[vs[1].(int)] + }).(WebhookNotificationHeadersHeaderOutput) +} + +type XmattersNotificationHeaders struct { + // An additional HTTP Header to include when sending requests + Headers []XmattersNotificationHeadersHeader `pulumi:"headers"` +} + +// XmattersNotificationHeadersInput is an input type that accepts XmattersNotificationHeadersArgs and XmattersNotificationHeadersOutput values. +// You can construct a concrete instance of `XmattersNotificationHeadersInput` via: +// +// XmattersNotificationHeadersArgs{...} +type XmattersNotificationHeadersInput interface { + pulumi.Input + + ToXmattersNotificationHeadersOutput() XmattersNotificationHeadersOutput + ToXmattersNotificationHeadersOutputWithContext(context.Context) XmattersNotificationHeadersOutput +} + +type XmattersNotificationHeadersArgs struct { + // An additional HTTP Header to include when sending requests + Headers XmattersNotificationHeadersHeaderArrayInput `pulumi:"headers"` +} + +func (XmattersNotificationHeadersArgs) ElementType() reflect.Type { + return reflect.TypeOf((*XmattersNotificationHeaders)(nil)).Elem() +} + +func (i XmattersNotificationHeadersArgs) ToXmattersNotificationHeadersOutput() XmattersNotificationHeadersOutput { + return i.ToXmattersNotificationHeadersOutputWithContext(context.Background()) +} + +func (i XmattersNotificationHeadersArgs) ToXmattersNotificationHeadersOutputWithContext(ctx context.Context) XmattersNotificationHeadersOutput { + return pulumi.ToOutputWithContext(ctx, i).(XmattersNotificationHeadersOutput) +} + +func (i XmattersNotificationHeadersArgs) ToXmattersNotificationHeadersPtrOutput() XmattersNotificationHeadersPtrOutput { + return i.ToXmattersNotificationHeadersPtrOutputWithContext(context.Background()) +} + +func (i XmattersNotificationHeadersArgs) ToXmattersNotificationHeadersPtrOutputWithContext(ctx context.Context) XmattersNotificationHeadersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(XmattersNotificationHeadersOutput).ToXmattersNotificationHeadersPtrOutputWithContext(ctx) +} + +// XmattersNotificationHeadersPtrInput is an input type that accepts XmattersNotificationHeadersArgs, XmattersNotificationHeadersPtr and XmattersNotificationHeadersPtrOutput values. +// You can construct a concrete instance of `XmattersNotificationHeadersPtrInput` via: +// +// XmattersNotificationHeadersArgs{...} +// +// or: +// +// nil +type XmattersNotificationHeadersPtrInput interface { + pulumi.Input + + ToXmattersNotificationHeadersPtrOutput() XmattersNotificationHeadersPtrOutput + ToXmattersNotificationHeadersPtrOutputWithContext(context.Context) XmattersNotificationHeadersPtrOutput +} + +type xmattersNotificationHeadersPtrType XmattersNotificationHeadersArgs + +func XmattersNotificationHeadersPtr(v *XmattersNotificationHeadersArgs) XmattersNotificationHeadersPtrInput { + return (*xmattersNotificationHeadersPtrType)(v) +} + +func (*xmattersNotificationHeadersPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**XmattersNotificationHeaders)(nil)).Elem() +} + +func (i *xmattersNotificationHeadersPtrType) ToXmattersNotificationHeadersPtrOutput() XmattersNotificationHeadersPtrOutput { + return i.ToXmattersNotificationHeadersPtrOutputWithContext(context.Background()) +} + +func (i *xmattersNotificationHeadersPtrType) ToXmattersNotificationHeadersPtrOutputWithContext(ctx context.Context) XmattersNotificationHeadersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(XmattersNotificationHeadersPtrOutput) +} + +type XmattersNotificationHeadersOutput struct{ *pulumi.OutputState } + +func (XmattersNotificationHeadersOutput) ElementType() reflect.Type { + return reflect.TypeOf((*XmattersNotificationHeaders)(nil)).Elem() +} + +func (o XmattersNotificationHeadersOutput) ToXmattersNotificationHeadersOutput() XmattersNotificationHeadersOutput { + return o +} + +func (o XmattersNotificationHeadersOutput) ToXmattersNotificationHeadersOutputWithContext(ctx context.Context) XmattersNotificationHeadersOutput { + return o +} + +func (o XmattersNotificationHeadersOutput) ToXmattersNotificationHeadersPtrOutput() XmattersNotificationHeadersPtrOutput { + return o.ToXmattersNotificationHeadersPtrOutputWithContext(context.Background()) +} + +func (o XmattersNotificationHeadersOutput) ToXmattersNotificationHeadersPtrOutputWithContext(ctx context.Context) XmattersNotificationHeadersPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v XmattersNotificationHeaders) *XmattersNotificationHeaders { + return &v + }).(XmattersNotificationHeadersPtrOutput) +} + +// An additional HTTP Header to include when sending requests +func (o XmattersNotificationHeadersOutput) Headers() XmattersNotificationHeadersHeaderArrayOutput { + return o.ApplyT(func(v XmattersNotificationHeaders) []XmattersNotificationHeadersHeader { return v.Headers }).(XmattersNotificationHeadersHeaderArrayOutput) +} + +type XmattersNotificationHeadersPtrOutput struct{ *pulumi.OutputState } + +func (XmattersNotificationHeadersPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**XmattersNotificationHeaders)(nil)).Elem() +} + +func (o XmattersNotificationHeadersPtrOutput) ToXmattersNotificationHeadersPtrOutput() XmattersNotificationHeadersPtrOutput { + return o +} + +func (o XmattersNotificationHeadersPtrOutput) ToXmattersNotificationHeadersPtrOutputWithContext(ctx context.Context) XmattersNotificationHeadersPtrOutput { + return o +} + +func (o XmattersNotificationHeadersPtrOutput) Elem() XmattersNotificationHeadersOutput { + return o.ApplyT(func(v *XmattersNotificationHeaders) XmattersNotificationHeaders { + if v != nil { + return *v + } + var ret XmattersNotificationHeaders + return ret + }).(XmattersNotificationHeadersOutput) +} + +// An additional HTTP Header to include when sending requests +func (o XmattersNotificationHeadersPtrOutput) Headers() XmattersNotificationHeadersHeaderArrayOutput { + return o.ApplyT(func(v *XmattersNotificationHeaders) []XmattersNotificationHeadersHeader { + if v == nil { + return nil + } + return v.Headers + }).(XmattersNotificationHeadersHeaderArrayOutput) +} + +type XmattersNotificationHeadersHeader struct { + // The name of the notification configuration + Name string `pulumi:"name"` + SecretValue *string `pulumi:"secretValue"` + Value *string `pulumi:"value"` +} + +// XmattersNotificationHeadersHeaderInput is an input type that accepts XmattersNotificationHeadersHeaderArgs and XmattersNotificationHeadersHeaderOutput values. +// You can construct a concrete instance of `XmattersNotificationHeadersHeaderInput` via: +// +// XmattersNotificationHeadersHeaderArgs{...} +type XmattersNotificationHeadersHeaderInput interface { + pulumi.Input + + ToXmattersNotificationHeadersHeaderOutput() XmattersNotificationHeadersHeaderOutput + ToXmattersNotificationHeadersHeaderOutputWithContext(context.Context) XmattersNotificationHeadersHeaderOutput +} + +type XmattersNotificationHeadersHeaderArgs struct { + // The name of the notification configuration + Name pulumi.StringInput `pulumi:"name"` + SecretValue pulumi.StringPtrInput `pulumi:"secretValue"` + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (XmattersNotificationHeadersHeaderArgs) ElementType() reflect.Type { + return reflect.TypeOf((*XmattersNotificationHeadersHeader)(nil)).Elem() +} + +func (i XmattersNotificationHeadersHeaderArgs) ToXmattersNotificationHeadersHeaderOutput() XmattersNotificationHeadersHeaderOutput { + return i.ToXmattersNotificationHeadersHeaderOutputWithContext(context.Background()) +} + +func (i XmattersNotificationHeadersHeaderArgs) ToXmattersNotificationHeadersHeaderOutputWithContext(ctx context.Context) XmattersNotificationHeadersHeaderOutput { + return pulumi.ToOutputWithContext(ctx, i).(XmattersNotificationHeadersHeaderOutput) +} + +// XmattersNotificationHeadersHeaderArrayInput is an input type that accepts XmattersNotificationHeadersHeaderArray and XmattersNotificationHeadersHeaderArrayOutput values. +// You can construct a concrete instance of `XmattersNotificationHeadersHeaderArrayInput` via: +// +// XmattersNotificationHeadersHeaderArray{ XmattersNotificationHeadersHeaderArgs{...} } +type XmattersNotificationHeadersHeaderArrayInput interface { + pulumi.Input + + ToXmattersNotificationHeadersHeaderArrayOutput() XmattersNotificationHeadersHeaderArrayOutput + ToXmattersNotificationHeadersHeaderArrayOutputWithContext(context.Context) XmattersNotificationHeadersHeaderArrayOutput +} + +type XmattersNotificationHeadersHeaderArray []XmattersNotificationHeadersHeaderInput + +func (XmattersNotificationHeadersHeaderArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]XmattersNotificationHeadersHeader)(nil)).Elem() +} + +func (i XmattersNotificationHeadersHeaderArray) ToXmattersNotificationHeadersHeaderArrayOutput() XmattersNotificationHeadersHeaderArrayOutput { + return i.ToXmattersNotificationHeadersHeaderArrayOutputWithContext(context.Background()) +} + +func (i XmattersNotificationHeadersHeaderArray) ToXmattersNotificationHeadersHeaderArrayOutputWithContext(ctx context.Context) XmattersNotificationHeadersHeaderArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(XmattersNotificationHeadersHeaderArrayOutput) +} + +type XmattersNotificationHeadersHeaderOutput struct{ *pulumi.OutputState } + +func (XmattersNotificationHeadersHeaderOutput) ElementType() reflect.Type { + return reflect.TypeOf((*XmattersNotificationHeadersHeader)(nil)).Elem() +} + +func (o XmattersNotificationHeadersHeaderOutput) ToXmattersNotificationHeadersHeaderOutput() XmattersNotificationHeadersHeaderOutput { + return o +} + +func (o XmattersNotificationHeadersHeaderOutput) ToXmattersNotificationHeadersHeaderOutputWithContext(ctx context.Context) XmattersNotificationHeadersHeaderOutput { + return o +} + +// The name of the notification configuration +func (o XmattersNotificationHeadersHeaderOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v XmattersNotificationHeadersHeader) string { return v.Name }).(pulumi.StringOutput) +} + +func (o XmattersNotificationHeadersHeaderOutput) SecretValue() pulumi.StringPtrOutput { + return o.ApplyT(func(v XmattersNotificationHeadersHeader) *string { return v.SecretValue }).(pulumi.StringPtrOutput) +} + +func (o XmattersNotificationHeadersHeaderOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v XmattersNotificationHeadersHeader) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type XmattersNotificationHeadersHeaderArrayOutput struct{ *pulumi.OutputState } + +func (XmattersNotificationHeadersHeaderArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]XmattersNotificationHeadersHeader)(nil)).Elem() +} + +func (o XmattersNotificationHeadersHeaderArrayOutput) ToXmattersNotificationHeadersHeaderArrayOutput() XmattersNotificationHeadersHeaderArrayOutput { + return o +} + +func (o XmattersNotificationHeadersHeaderArrayOutput) ToXmattersNotificationHeadersHeaderArrayOutputWithContext(ctx context.Context) XmattersNotificationHeadersHeaderArrayOutput { + return o +} + +func (o XmattersNotificationHeadersHeaderArrayOutput) Index(i pulumi.IntInput) XmattersNotificationHeadersHeaderOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) XmattersNotificationHeadersHeader { + return vs[0].([]XmattersNotificationHeadersHeader)[vs[1].(int)] + }).(XmattersNotificationHeadersHeaderOutput) +} + type GetSyntheticLocationsLocations struct { // The name of the location Locations []GetSyntheticLocationsLocationsLocation `pulumi:"locations"` @@ -51778,6 +54458,34 @@ func (o GetSyntheticLocationsLocationsLocationArrayOutput) Index(i pulumi.IntInp } func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneMetadataInput)(nil)).Elem(), ManagementZoneMetadataArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneMetadataPtrInput)(nil)).Elem(), ManagementZoneMetadataArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleInput)(nil)).Elem(), ManagementZoneRuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleArrayInput)(nil)).Elem(), ManagementZoneRuleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionInput)(nil)).Elem(), ManagementZoneRuleConditionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionArrayInput)(nil)).Elem(), ManagementZoneRuleConditionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionApplicationTypeInput)(nil)).Elem(), ManagementZoneRuleConditionApplicationTypeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionApplicationTypeArrayInput)(nil)).Elem(), ManagementZoneRuleConditionApplicationTypeArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionApplicationTypeComparisonInput)(nil)).Elem(), ManagementZoneRuleConditionApplicationTypeComparisonArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionApplicationTypeComparisonArrayInput)(nil)).Elem(), ManagementZoneRuleConditionApplicationTypeComparisonArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionAzureComputeModeInput)(nil)).Elem(), ManagementZoneRuleConditionAzureComputeModeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionAzureComputeModeArrayInput)(nil)).Elem(), ManagementZoneRuleConditionAzureComputeModeArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionAzureComputeModeComparisonInput)(nil)).Elem(), ManagementZoneRuleConditionAzureComputeModeComparisonArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionAzureComputeModeComparisonArrayInput)(nil)).Elem(), ManagementZoneRuleConditionAzureComputeModeComparisonArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionAzureSkuComparisionInput)(nil)).Elem(), ManagementZoneRuleConditionAzureSkuComparisionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionAzureSkuComparisionArrayInput)(nil)).Elem(), ManagementZoneRuleConditionAzureSkuComparisionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionAzureSkusInput)(nil)).Elem(), ManagementZoneRuleConditionAzureSkusArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionAzureSkusArrayInput)(nil)).Elem(), ManagementZoneRuleConditionAzureSkusArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionBaseComparisonBasicInput)(nil)).Elem(), ManagementZoneRuleConditionBaseComparisonBasicArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionBaseComparisonBasicArrayInput)(nil)).Elem(), ManagementZoneRuleConditionBaseComparisonBasicArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionBaseConditionKeyInput)(nil)).Elem(), ManagementZoneRuleConditionBaseConditionKeyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionBaseConditionKeyArrayInput)(nil)).Elem(), ManagementZoneRuleConditionBaseConditionKeyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionBitnessInput)(nil)).Elem(), ManagementZoneRuleConditionBitnessArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionBitnessArrayInput)(nil)).Elem(), ManagementZoneRuleConditionBitnessArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionBitnessComparisionInput)(nil)).Elem(), ManagementZoneRuleConditionBitnessComparisionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionBitnessComparisionArrayInput)(nil)).Elem(), ManagementZoneRuleConditionBitnessComparisionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionCloudTypeInput)(nil)).Elem(), ManagementZoneRuleConditionCloudTypeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionCloudTypeArrayInput)(nil)).Elem(), ManagementZoneRuleConditionCloudTypeArray{}) pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionCloudTypeComparisonInput)(nil)).Elem(), ManagementZoneRuleConditionCloudTypeComparisonArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionCloudTypeComparisonArrayInput)(nil)).Elem(), ManagementZoneRuleConditionCloudTypeComparisonArray{}) pulumi.RegisterInputType(reflect.TypeOf((*ManagementZoneRuleConditionComparisonInput)(nil)).Elem(), ManagementZoneRuleConditionComparisonArgs{}) @@ -52487,10 +55195,46 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*WebApplicationWaterfallSettingsPtrInput)(nil)).Elem(), WebApplicationWaterfallSettingsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*WebApplicationXhrActionApdexSettingsInput)(nil)).Elem(), WebApplicationXhrActionApdexSettingsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*WebApplicationXhrActionApdexSettingsPtrInput)(nil)).Elem(), WebApplicationXhrActionApdexSettingsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*WebhookNotificationHeadersInput)(nil)).Elem(), WebhookNotificationHeadersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*WebhookNotificationHeadersPtrInput)(nil)).Elem(), WebhookNotificationHeadersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*WebhookNotificationHeadersHeaderInput)(nil)).Elem(), WebhookNotificationHeadersHeaderArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*WebhookNotificationHeadersHeaderArrayInput)(nil)).Elem(), WebhookNotificationHeadersHeaderArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*XmattersNotificationHeadersInput)(nil)).Elem(), XmattersNotificationHeadersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*XmattersNotificationHeadersPtrInput)(nil)).Elem(), XmattersNotificationHeadersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*XmattersNotificationHeadersHeaderInput)(nil)).Elem(), XmattersNotificationHeadersHeaderArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*XmattersNotificationHeadersHeaderArrayInput)(nil)).Elem(), XmattersNotificationHeadersHeaderArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetSyntheticLocationsLocationsInput)(nil)).Elem(), GetSyntheticLocationsLocationsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetSyntheticLocationsLocationsPtrInput)(nil)).Elem(), GetSyntheticLocationsLocationsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetSyntheticLocationsLocationsLocationInput)(nil)).Elem(), GetSyntheticLocationsLocationsLocationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetSyntheticLocationsLocationsLocationArrayInput)(nil)).Elem(), GetSyntheticLocationsLocationsLocationArray{}) + pulumi.RegisterOutputType(ManagementZoneMetadataOutput{}) + pulumi.RegisterOutputType(ManagementZoneMetadataPtrOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleArrayOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionArrayOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionApplicationTypeOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionApplicationTypeArrayOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionApplicationTypeComparisonOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionApplicationTypeComparisonArrayOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionAzureComputeModeOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionAzureComputeModeArrayOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionAzureComputeModeComparisonOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionAzureComputeModeComparisonArrayOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionAzureSkuComparisionOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionAzureSkuComparisionArrayOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionAzureSkusOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionAzureSkusArrayOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionBaseComparisonBasicOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionBaseComparisonBasicArrayOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionBaseConditionKeyOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionBaseConditionKeyArrayOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionBitnessOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionBitnessArrayOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionBitnessComparisionOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionBitnessComparisionArrayOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionCloudTypeOutput{}) + pulumi.RegisterOutputType(ManagementZoneRuleConditionCloudTypeArrayOutput{}) pulumi.RegisterOutputType(ManagementZoneRuleConditionCloudTypeComparisonOutput{}) pulumi.RegisterOutputType(ManagementZoneRuleConditionCloudTypeComparisonArrayOutput{}) pulumi.RegisterOutputType(ManagementZoneRuleConditionComparisonOutput{}) @@ -53200,6 +55944,14 @@ func init() { pulumi.RegisterOutputType(WebApplicationWaterfallSettingsPtrOutput{}) pulumi.RegisterOutputType(WebApplicationXhrActionApdexSettingsOutput{}) pulumi.RegisterOutputType(WebApplicationXhrActionApdexSettingsPtrOutput{}) + pulumi.RegisterOutputType(WebhookNotificationHeadersOutput{}) + pulumi.RegisterOutputType(WebhookNotificationHeadersPtrOutput{}) + pulumi.RegisterOutputType(WebhookNotificationHeadersHeaderOutput{}) + pulumi.RegisterOutputType(WebhookNotificationHeadersHeaderArrayOutput{}) + pulumi.RegisterOutputType(XmattersNotificationHeadersOutput{}) + pulumi.RegisterOutputType(XmattersNotificationHeadersPtrOutput{}) + pulumi.RegisterOutputType(XmattersNotificationHeadersHeaderOutput{}) + pulumi.RegisterOutputType(XmattersNotificationHeadersHeaderArrayOutput{}) pulumi.RegisterOutputType(GetSyntheticLocationsLocationsOutput{}) pulumi.RegisterOutputType(GetSyntheticLocationsLocationsPtrOutput{}) pulumi.RegisterOutputType(GetSyntheticLocationsLocationsLocationOutput{}) diff --git a/sdk/go/dynatrace/serviceNowNotification.go b/sdk/go/dynatrace/serviceNowNotification.go new file mode 100644 index 00000000..29995674 --- /dev/null +++ b/sdk/go/dynatrace/serviceNowNotification.go @@ -0,0 +1,371 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dynatrace + +import ( + "context" + "reflect" + + "github.com/pkg/errors" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type ServiceNowNotification struct { + pulumi.CustomResourceState + + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolOutput `pulumi:"active"` + // Send events into ServiceNow ITOM + Events pulumi.BoolPtrOutput `pulumi:"events"` + // Send incidents into ServiceNow ITSM + Incidents pulumi.BoolOutput `pulumi:"incidents"` + // The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + Instance pulumi.StringPtrOutput `pulumi:"instance"` + // The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Message pulumi.StringOutput `pulumi:"message"` + // The name of the notification configuration + Name pulumi.StringOutput `pulumi:"name"` + // The password to the ServiceNow account + Password pulumi.StringPtrOutput `pulumi:"password"` + // The ID of the associated alerting profile + Profile pulumi.StringOutput `pulumi:"profile"` + // The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + Url pulumi.StringPtrOutput `pulumi:"url"` + // The username of the ServiceNow account. Make sure that your user account has the `restService`, `webRequestAdmin`, and `x_dynat_ruxit.Integration` roles + Username pulumi.StringOutput `pulumi:"username"` +} + +// NewServiceNowNotification registers a new resource with the given unique name, arguments, and options. +func NewServiceNowNotification(ctx *pulumi.Context, + name string, args *ServiceNowNotificationArgs, opts ...pulumi.ResourceOption) (*ServiceNowNotification, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Active == nil { + return nil, errors.New("invalid value for required argument 'Active'") + } + if args.Incidents == nil { + return nil, errors.New("invalid value for required argument 'Incidents'") + } + if args.Message == nil { + return nil, errors.New("invalid value for required argument 'Message'") + } + if args.Profile == nil { + return nil, errors.New("invalid value for required argument 'Profile'") + } + if args.Username == nil { + return nil, errors.New("invalid value for required argument 'Username'") + } + if args.Password != nil { + args.Password = pulumi.ToSecret(args.Password).(pulumi.StringPtrOutput) + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "password", + }) + opts = append(opts, secrets) + opts = pkgResourceDefaultOpts(opts) + var resource ServiceNowNotification + err := ctx.RegisterResource("dynatrace:index/serviceNowNotification:ServiceNowNotification", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetServiceNowNotification gets an existing ServiceNowNotification resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetServiceNowNotification(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ServiceNowNotificationState, opts ...pulumi.ResourceOption) (*ServiceNowNotification, error) { + var resource ServiceNowNotification + err := ctx.ReadResource("dynatrace:index/serviceNowNotification:ServiceNowNotification", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering ServiceNowNotification resources. +type serviceNowNotificationState struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active *bool `pulumi:"active"` + // Send events into ServiceNow ITOM + Events *bool `pulumi:"events"` + // Send incidents into ServiceNow ITSM + Incidents *bool `pulumi:"incidents"` + // The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + Instance *string `pulumi:"instance"` + // The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Message *string `pulumi:"message"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // The password to the ServiceNow account + Password *string `pulumi:"password"` + // The ID of the associated alerting profile + Profile *string `pulumi:"profile"` + // The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + Url *string `pulumi:"url"` + // The username of the ServiceNow account. Make sure that your user account has the `restService`, `webRequestAdmin`, and `x_dynat_ruxit.Integration` roles + Username *string `pulumi:"username"` +} + +type ServiceNowNotificationState struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolPtrInput + // Send events into ServiceNow ITOM + Events pulumi.BoolPtrInput + // Send incidents into ServiceNow ITSM + Incidents pulumi.BoolPtrInput + // The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + Instance pulumi.StringPtrInput + // The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Message pulumi.StringPtrInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // The password to the ServiceNow account + Password pulumi.StringPtrInput + // The ID of the associated alerting profile + Profile pulumi.StringPtrInput + // The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + Url pulumi.StringPtrInput + // The username of the ServiceNow account. Make sure that your user account has the `restService`, `webRequestAdmin`, and `x_dynat_ruxit.Integration` roles + Username pulumi.StringPtrInput +} + +func (ServiceNowNotificationState) ElementType() reflect.Type { + return reflect.TypeOf((*serviceNowNotificationState)(nil)).Elem() +} + +type serviceNowNotificationArgs struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active bool `pulumi:"active"` + // Send events into ServiceNow ITOM + Events *bool `pulumi:"events"` + // Send incidents into ServiceNow ITSM + Incidents bool `pulumi:"incidents"` + // The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + Instance *string `pulumi:"instance"` + // The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Message string `pulumi:"message"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // The password to the ServiceNow account + Password *string `pulumi:"password"` + // The ID of the associated alerting profile + Profile string `pulumi:"profile"` + // The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + Url *string `pulumi:"url"` + // The username of the ServiceNow account. Make sure that your user account has the `restService`, `webRequestAdmin`, and `x_dynat_ruxit.Integration` roles + Username string `pulumi:"username"` +} + +// The set of arguments for constructing a ServiceNowNotification resource. +type ServiceNowNotificationArgs struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolInput + // Send events into ServiceNow ITOM + Events pulumi.BoolPtrInput + // Send incidents into ServiceNow ITSM + Incidents pulumi.BoolInput + // The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + Instance pulumi.StringPtrInput + // The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Message pulumi.StringInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // The password to the ServiceNow account + Password pulumi.StringPtrInput + // The ID of the associated alerting profile + Profile pulumi.StringInput + // The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + Url pulumi.StringPtrInput + // The username of the ServiceNow account. Make sure that your user account has the `restService`, `webRequestAdmin`, and `x_dynat_ruxit.Integration` roles + Username pulumi.StringInput +} + +func (ServiceNowNotificationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*serviceNowNotificationArgs)(nil)).Elem() +} + +type ServiceNowNotificationInput interface { + pulumi.Input + + ToServiceNowNotificationOutput() ServiceNowNotificationOutput + ToServiceNowNotificationOutputWithContext(ctx context.Context) ServiceNowNotificationOutput +} + +func (*ServiceNowNotification) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceNowNotification)(nil)).Elem() +} + +func (i *ServiceNowNotification) ToServiceNowNotificationOutput() ServiceNowNotificationOutput { + return i.ToServiceNowNotificationOutputWithContext(context.Background()) +} + +func (i *ServiceNowNotification) ToServiceNowNotificationOutputWithContext(ctx context.Context) ServiceNowNotificationOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceNowNotificationOutput) +} + +// ServiceNowNotificationArrayInput is an input type that accepts ServiceNowNotificationArray and ServiceNowNotificationArrayOutput values. +// You can construct a concrete instance of `ServiceNowNotificationArrayInput` via: +// +// ServiceNowNotificationArray{ ServiceNowNotificationArgs{...} } +type ServiceNowNotificationArrayInput interface { + pulumi.Input + + ToServiceNowNotificationArrayOutput() ServiceNowNotificationArrayOutput + ToServiceNowNotificationArrayOutputWithContext(context.Context) ServiceNowNotificationArrayOutput +} + +type ServiceNowNotificationArray []ServiceNowNotificationInput + +func (ServiceNowNotificationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ServiceNowNotification)(nil)).Elem() +} + +func (i ServiceNowNotificationArray) ToServiceNowNotificationArrayOutput() ServiceNowNotificationArrayOutput { + return i.ToServiceNowNotificationArrayOutputWithContext(context.Background()) +} + +func (i ServiceNowNotificationArray) ToServiceNowNotificationArrayOutputWithContext(ctx context.Context) ServiceNowNotificationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceNowNotificationArrayOutput) +} + +// ServiceNowNotificationMapInput is an input type that accepts ServiceNowNotificationMap and ServiceNowNotificationMapOutput values. +// You can construct a concrete instance of `ServiceNowNotificationMapInput` via: +// +// ServiceNowNotificationMap{ "key": ServiceNowNotificationArgs{...} } +type ServiceNowNotificationMapInput interface { + pulumi.Input + + ToServiceNowNotificationMapOutput() ServiceNowNotificationMapOutput + ToServiceNowNotificationMapOutputWithContext(context.Context) ServiceNowNotificationMapOutput +} + +type ServiceNowNotificationMap map[string]ServiceNowNotificationInput + +func (ServiceNowNotificationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ServiceNowNotification)(nil)).Elem() +} + +func (i ServiceNowNotificationMap) ToServiceNowNotificationMapOutput() ServiceNowNotificationMapOutput { + return i.ToServiceNowNotificationMapOutputWithContext(context.Background()) +} + +func (i ServiceNowNotificationMap) ToServiceNowNotificationMapOutputWithContext(ctx context.Context) ServiceNowNotificationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceNowNotificationMapOutput) +} + +type ServiceNowNotificationOutput struct{ *pulumi.OutputState } + +func (ServiceNowNotificationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceNowNotification)(nil)).Elem() +} + +func (o ServiceNowNotificationOutput) ToServiceNowNotificationOutput() ServiceNowNotificationOutput { + return o +} + +func (o ServiceNowNotificationOutput) ToServiceNowNotificationOutputWithContext(ctx context.Context) ServiceNowNotificationOutput { + return o +} + +// The configuration is enabled (`true`) or disabled (`false`) +func (o ServiceNowNotificationOutput) Active() pulumi.BoolOutput { + return o.ApplyT(func(v *ServiceNowNotification) pulumi.BoolOutput { return v.Active }).(pulumi.BoolOutput) +} + +// Send events into ServiceNow ITOM +func (o ServiceNowNotificationOutput) Events() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ServiceNowNotification) pulumi.BoolPtrOutput { return v.Events }).(pulumi.BoolPtrOutput) +} + +// Send incidents into ServiceNow ITSM +func (o ServiceNowNotificationOutput) Incidents() pulumi.BoolOutput { + return o.ApplyT(func(v *ServiceNowNotification) pulumi.BoolOutput { return v.Incidents }).(pulumi.BoolOutput) +} + +// The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them +func (o ServiceNowNotificationOutput) Instance() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceNowNotification) pulumi.StringPtrOutput { return v.Instance }).(pulumi.StringPtrOutput) +} + +// The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas +func (o ServiceNowNotificationOutput) Message() pulumi.StringOutput { + return o.ApplyT(func(v *ServiceNowNotification) pulumi.StringOutput { return v.Message }).(pulumi.StringOutput) +} + +// The name of the notification configuration +func (o ServiceNowNotificationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *ServiceNowNotification) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The password to the ServiceNow account +func (o ServiceNowNotificationOutput) Password() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceNowNotification) pulumi.StringPtrOutput { return v.Password }).(pulumi.StringPtrOutput) +} + +// The ID of the associated alerting profile +func (o ServiceNowNotificationOutput) Profile() pulumi.StringOutput { + return o.ApplyT(func(v *ServiceNowNotification) pulumi.StringOutput { return v.Profile }).(pulumi.StringOutput) +} + +// The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them +func (o ServiceNowNotificationOutput) Url() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceNowNotification) pulumi.StringPtrOutput { return v.Url }).(pulumi.StringPtrOutput) +} + +// The username of the ServiceNow account. Make sure that your user account has the `restService`, `webRequestAdmin`, and `x_dynat_ruxit.Integration` roles +func (o ServiceNowNotificationOutput) Username() pulumi.StringOutput { + return o.ApplyT(func(v *ServiceNowNotification) pulumi.StringOutput { return v.Username }).(pulumi.StringOutput) +} + +type ServiceNowNotificationArrayOutput struct{ *pulumi.OutputState } + +func (ServiceNowNotificationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ServiceNowNotification)(nil)).Elem() +} + +func (o ServiceNowNotificationArrayOutput) ToServiceNowNotificationArrayOutput() ServiceNowNotificationArrayOutput { + return o +} + +func (o ServiceNowNotificationArrayOutput) ToServiceNowNotificationArrayOutputWithContext(ctx context.Context) ServiceNowNotificationArrayOutput { + return o +} + +func (o ServiceNowNotificationArrayOutput) Index(i pulumi.IntInput) ServiceNowNotificationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ServiceNowNotification { + return vs[0].([]*ServiceNowNotification)[vs[1].(int)] + }).(ServiceNowNotificationOutput) +} + +type ServiceNowNotificationMapOutput struct{ *pulumi.OutputState } + +func (ServiceNowNotificationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ServiceNowNotification)(nil)).Elem() +} + +func (o ServiceNowNotificationMapOutput) ToServiceNowNotificationMapOutput() ServiceNowNotificationMapOutput { + return o +} + +func (o ServiceNowNotificationMapOutput) ToServiceNowNotificationMapOutputWithContext(ctx context.Context) ServiceNowNotificationMapOutput { + return o +} + +func (o ServiceNowNotificationMapOutput) MapIndex(k pulumi.StringInput) ServiceNowNotificationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ServiceNowNotification { + return vs[0].(map[string]*ServiceNowNotification)[vs[1].(string)] + }).(ServiceNowNotificationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ServiceNowNotificationInput)(nil)).Elem(), &ServiceNowNotification{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceNowNotificationArrayInput)(nil)).Elem(), ServiceNowNotificationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceNowNotificationMapInput)(nil)).Elem(), ServiceNowNotificationMap{}) + pulumi.RegisterOutputType(ServiceNowNotificationOutput{}) + pulumi.RegisterOutputType(ServiceNowNotificationArrayOutput{}) + pulumi.RegisterOutputType(ServiceNowNotificationMapOutput{}) +} diff --git a/sdk/go/dynatrace/slackNotification.go b/sdk/go/dynatrace/slackNotification.go new file mode 100644 index 00000000..5d9d96a9 --- /dev/null +++ b/sdk/go/dynatrace/slackNotification.go @@ -0,0 +1,311 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dynatrace + +import ( + "context" + "reflect" + + "github.com/pkg/errors" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type SlackNotification struct { + pulumi.CustomResourceState + + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolOutput `pulumi:"active"` + // The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + Channel pulumi.StringOutput `pulumi:"channel"` + // The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Message pulumi.StringOutput `pulumi:"message"` + // The name of the notification configuration + Name pulumi.StringOutput `pulumi:"name"` + // The ID of the associated alerting profile + Profile pulumi.StringOutput `pulumi:"profile"` + // The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + Url pulumi.StringOutput `pulumi:"url"` +} + +// NewSlackNotification registers a new resource with the given unique name, arguments, and options. +func NewSlackNotification(ctx *pulumi.Context, + name string, args *SlackNotificationArgs, opts ...pulumi.ResourceOption) (*SlackNotification, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Active == nil { + return nil, errors.New("invalid value for required argument 'Active'") + } + if args.Channel == nil { + return nil, errors.New("invalid value for required argument 'Channel'") + } + if args.Message == nil { + return nil, errors.New("invalid value for required argument 'Message'") + } + if args.Profile == nil { + return nil, errors.New("invalid value for required argument 'Profile'") + } + if args.Url == nil { + return nil, errors.New("invalid value for required argument 'Url'") + } + if args.Url != nil { + args.Url = pulumi.ToSecret(args.Url).(pulumi.StringOutput) + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "url", + }) + opts = append(opts, secrets) + opts = pkgResourceDefaultOpts(opts) + var resource SlackNotification + err := ctx.RegisterResource("dynatrace:index/slackNotification:SlackNotification", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetSlackNotification gets an existing SlackNotification resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetSlackNotification(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *SlackNotificationState, opts ...pulumi.ResourceOption) (*SlackNotification, error) { + var resource SlackNotification + err := ctx.ReadResource("dynatrace:index/slackNotification:SlackNotification", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering SlackNotification resources. +type slackNotificationState struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active *bool `pulumi:"active"` + // The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + Channel *string `pulumi:"channel"` + // The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Message *string `pulumi:"message"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // The ID of the associated alerting profile + Profile *string `pulumi:"profile"` + // The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + Url *string `pulumi:"url"` +} + +type SlackNotificationState struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolPtrInput + // The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + Channel pulumi.StringPtrInput + // The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Message pulumi.StringPtrInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // The ID of the associated alerting profile + Profile pulumi.StringPtrInput + // The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + Url pulumi.StringPtrInput +} + +func (SlackNotificationState) ElementType() reflect.Type { + return reflect.TypeOf((*slackNotificationState)(nil)).Elem() +} + +type slackNotificationArgs struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active bool `pulumi:"active"` + // The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + Channel string `pulumi:"channel"` + // The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Message string `pulumi:"message"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // The ID of the associated alerting profile + Profile string `pulumi:"profile"` + // The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + Url string `pulumi:"url"` +} + +// The set of arguments for constructing a SlackNotification resource. +type SlackNotificationArgs struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolInput + // The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + Channel pulumi.StringInput + // The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Message pulumi.StringInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // The ID of the associated alerting profile + Profile pulumi.StringInput + // The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + Url pulumi.StringInput +} + +func (SlackNotificationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*slackNotificationArgs)(nil)).Elem() +} + +type SlackNotificationInput interface { + pulumi.Input + + ToSlackNotificationOutput() SlackNotificationOutput + ToSlackNotificationOutputWithContext(ctx context.Context) SlackNotificationOutput +} + +func (*SlackNotification) ElementType() reflect.Type { + return reflect.TypeOf((**SlackNotification)(nil)).Elem() +} + +func (i *SlackNotification) ToSlackNotificationOutput() SlackNotificationOutput { + return i.ToSlackNotificationOutputWithContext(context.Background()) +} + +func (i *SlackNotification) ToSlackNotificationOutputWithContext(ctx context.Context) SlackNotificationOutput { + return pulumi.ToOutputWithContext(ctx, i).(SlackNotificationOutput) +} + +// SlackNotificationArrayInput is an input type that accepts SlackNotificationArray and SlackNotificationArrayOutput values. +// You can construct a concrete instance of `SlackNotificationArrayInput` via: +// +// SlackNotificationArray{ SlackNotificationArgs{...} } +type SlackNotificationArrayInput interface { + pulumi.Input + + ToSlackNotificationArrayOutput() SlackNotificationArrayOutput + ToSlackNotificationArrayOutputWithContext(context.Context) SlackNotificationArrayOutput +} + +type SlackNotificationArray []SlackNotificationInput + +func (SlackNotificationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SlackNotification)(nil)).Elem() +} + +func (i SlackNotificationArray) ToSlackNotificationArrayOutput() SlackNotificationArrayOutput { + return i.ToSlackNotificationArrayOutputWithContext(context.Background()) +} + +func (i SlackNotificationArray) ToSlackNotificationArrayOutputWithContext(ctx context.Context) SlackNotificationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SlackNotificationArrayOutput) +} + +// SlackNotificationMapInput is an input type that accepts SlackNotificationMap and SlackNotificationMapOutput values. +// You can construct a concrete instance of `SlackNotificationMapInput` via: +// +// SlackNotificationMap{ "key": SlackNotificationArgs{...} } +type SlackNotificationMapInput interface { + pulumi.Input + + ToSlackNotificationMapOutput() SlackNotificationMapOutput + ToSlackNotificationMapOutputWithContext(context.Context) SlackNotificationMapOutput +} + +type SlackNotificationMap map[string]SlackNotificationInput + +func (SlackNotificationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SlackNotification)(nil)).Elem() +} + +func (i SlackNotificationMap) ToSlackNotificationMapOutput() SlackNotificationMapOutput { + return i.ToSlackNotificationMapOutputWithContext(context.Background()) +} + +func (i SlackNotificationMap) ToSlackNotificationMapOutputWithContext(ctx context.Context) SlackNotificationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(SlackNotificationMapOutput) +} + +type SlackNotificationOutput struct{ *pulumi.OutputState } + +func (SlackNotificationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SlackNotification)(nil)).Elem() +} + +func (o SlackNotificationOutput) ToSlackNotificationOutput() SlackNotificationOutput { + return o +} + +func (o SlackNotificationOutput) ToSlackNotificationOutputWithContext(ctx context.Context) SlackNotificationOutput { + return o +} + +// The configuration is enabled (`true`) or disabled (`false`) +func (o SlackNotificationOutput) Active() pulumi.BoolOutput { + return o.ApplyT(func(v *SlackNotification) pulumi.BoolOutput { return v.Active }).(pulumi.BoolOutput) +} + +// The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to +func (o SlackNotificationOutput) Channel() pulumi.StringOutput { + return o.ApplyT(func(v *SlackNotification) pulumi.StringOutput { return v.Channel }).(pulumi.StringOutput) +} + +// The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas +func (o SlackNotificationOutput) Message() pulumi.StringOutput { + return o.ApplyT(func(v *SlackNotification) pulumi.StringOutput { return v.Message }).(pulumi.StringOutput) +} + +// The name of the notification configuration +func (o SlackNotificationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *SlackNotification) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The ID of the associated alerting profile +func (o SlackNotificationOutput) Profile() pulumi.StringOutput { + return o.ApplyT(func(v *SlackNotification) pulumi.StringOutput { return v.Profile }).(pulumi.StringOutput) +} + +// The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests +func (o SlackNotificationOutput) Url() pulumi.StringOutput { + return o.ApplyT(func(v *SlackNotification) pulumi.StringOutput { return v.Url }).(pulumi.StringOutput) +} + +type SlackNotificationArrayOutput struct{ *pulumi.OutputState } + +func (SlackNotificationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SlackNotification)(nil)).Elem() +} + +func (o SlackNotificationArrayOutput) ToSlackNotificationArrayOutput() SlackNotificationArrayOutput { + return o +} + +func (o SlackNotificationArrayOutput) ToSlackNotificationArrayOutputWithContext(ctx context.Context) SlackNotificationArrayOutput { + return o +} + +func (o SlackNotificationArrayOutput) Index(i pulumi.IntInput) SlackNotificationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *SlackNotification { + return vs[0].([]*SlackNotification)[vs[1].(int)] + }).(SlackNotificationOutput) +} + +type SlackNotificationMapOutput struct{ *pulumi.OutputState } + +func (SlackNotificationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SlackNotification)(nil)).Elem() +} + +func (o SlackNotificationMapOutput) ToSlackNotificationMapOutput() SlackNotificationMapOutput { + return o +} + +func (o SlackNotificationMapOutput) ToSlackNotificationMapOutputWithContext(ctx context.Context) SlackNotificationMapOutput { + return o +} + +func (o SlackNotificationMapOutput) MapIndex(k pulumi.StringInput) SlackNotificationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *SlackNotification { + return vs[0].(map[string]*SlackNotification)[vs[1].(string)] + }).(SlackNotificationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*SlackNotificationInput)(nil)).Elem(), &SlackNotification{}) + pulumi.RegisterInputType(reflect.TypeOf((*SlackNotificationArrayInput)(nil)).Elem(), SlackNotificationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*SlackNotificationMapInput)(nil)).Elem(), SlackNotificationMap{}) + pulumi.RegisterOutputType(SlackNotificationOutput{}) + pulumi.RegisterOutputType(SlackNotificationArrayOutput{}) + pulumi.RegisterOutputType(SlackNotificationMapOutput{}) +} diff --git a/sdk/go/dynatrace/trrelloNotification.go b/sdk/go/dynatrace/trrelloNotification.go new file mode 100644 index 00000000..8ef64e5a --- /dev/null +++ b/sdk/go/dynatrace/trrelloNotification.go @@ -0,0 +1,373 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dynatrace + +import ( + "context" + "reflect" + + "github.com/pkg/errors" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type TrrelloNotification struct { + pulumi.CustomResourceState + + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolOutput `pulumi:"active"` + // The application key for the Trello account + ApplicationKey pulumi.StringOutput `pulumi:"applicationKey"` + // The application token for the Trello account + AuthorizationToken pulumi.StringPtrOutput `pulumi:"authorizationToken"` + // The Trello board to which the card should be assigned + BoardId pulumi.StringOutput `pulumi:"boardId"` + // The description of the Trello card. You can use same placeholders as in card text + Description pulumi.StringOutput `pulumi:"description"` + // The Trello list to which the card should be assigned + ListId pulumi.StringOutput `pulumi:"listId"` + // The name of the notification configuration + Name pulumi.StringOutput `pulumi:"name"` + // The ID of the associated alerting profile + Profile pulumi.StringOutput `pulumi:"profile"` + // The Trello list to which the card of the resolved problem should be assigned + ResolvedListId pulumi.StringOutput `pulumi:"resolvedListId"` + // The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Text pulumi.StringOutput `pulumi:"text"` +} + +// NewTrrelloNotification registers a new resource with the given unique name, arguments, and options. +func NewTrrelloNotification(ctx *pulumi.Context, + name string, args *TrrelloNotificationArgs, opts ...pulumi.ResourceOption) (*TrrelloNotification, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Active == nil { + return nil, errors.New("invalid value for required argument 'Active'") + } + if args.ApplicationKey == nil { + return nil, errors.New("invalid value for required argument 'ApplicationKey'") + } + if args.BoardId == nil { + return nil, errors.New("invalid value for required argument 'BoardId'") + } + if args.Description == nil { + return nil, errors.New("invalid value for required argument 'Description'") + } + if args.ListId == nil { + return nil, errors.New("invalid value for required argument 'ListId'") + } + if args.Profile == nil { + return nil, errors.New("invalid value for required argument 'Profile'") + } + if args.ResolvedListId == nil { + return nil, errors.New("invalid value for required argument 'ResolvedListId'") + } + if args.Text == nil { + return nil, errors.New("invalid value for required argument 'Text'") + } + opts = pkgResourceDefaultOpts(opts) + var resource TrrelloNotification + err := ctx.RegisterResource("dynatrace:index/trrelloNotification:TrrelloNotification", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetTrrelloNotification gets an existing TrrelloNotification resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetTrrelloNotification(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *TrrelloNotificationState, opts ...pulumi.ResourceOption) (*TrrelloNotification, error) { + var resource TrrelloNotification + err := ctx.ReadResource("dynatrace:index/trrelloNotification:TrrelloNotification", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering TrrelloNotification resources. +type trrelloNotificationState struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active *bool `pulumi:"active"` + // The application key for the Trello account + ApplicationKey *string `pulumi:"applicationKey"` + // The application token for the Trello account + AuthorizationToken *string `pulumi:"authorizationToken"` + // The Trello board to which the card should be assigned + BoardId *string `pulumi:"boardId"` + // The description of the Trello card. You can use same placeholders as in card text + Description *string `pulumi:"description"` + // The Trello list to which the card should be assigned + ListId *string `pulumi:"listId"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // The ID of the associated alerting profile + Profile *string `pulumi:"profile"` + // The Trello list to which the card of the resolved problem should be assigned + ResolvedListId *string `pulumi:"resolvedListId"` + // The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Text *string `pulumi:"text"` +} + +type TrrelloNotificationState struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolPtrInput + // The application key for the Trello account + ApplicationKey pulumi.StringPtrInput + // The application token for the Trello account + AuthorizationToken pulumi.StringPtrInput + // The Trello board to which the card should be assigned + BoardId pulumi.StringPtrInput + // The description of the Trello card. You can use same placeholders as in card text + Description pulumi.StringPtrInput + // The Trello list to which the card should be assigned + ListId pulumi.StringPtrInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // The ID of the associated alerting profile + Profile pulumi.StringPtrInput + // The Trello list to which the card of the resolved problem should be assigned + ResolvedListId pulumi.StringPtrInput + // The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Text pulumi.StringPtrInput +} + +func (TrrelloNotificationState) ElementType() reflect.Type { + return reflect.TypeOf((*trrelloNotificationState)(nil)).Elem() +} + +type trrelloNotificationArgs struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active bool `pulumi:"active"` + // The application key for the Trello account + ApplicationKey string `pulumi:"applicationKey"` + // The application token for the Trello account + AuthorizationToken *string `pulumi:"authorizationToken"` + // The Trello board to which the card should be assigned + BoardId string `pulumi:"boardId"` + // The description of the Trello card. You can use same placeholders as in card text + Description string `pulumi:"description"` + // The Trello list to which the card should be assigned + ListId string `pulumi:"listId"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // The ID of the associated alerting profile + Profile string `pulumi:"profile"` + // The Trello list to which the card of the resolved problem should be assigned + ResolvedListId string `pulumi:"resolvedListId"` + // The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Text string `pulumi:"text"` +} + +// The set of arguments for constructing a TrrelloNotification resource. +type TrrelloNotificationArgs struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolInput + // The application key for the Trello account + ApplicationKey pulumi.StringInput + // The application token for the Trello account + AuthorizationToken pulumi.StringPtrInput + // The Trello board to which the card should be assigned + BoardId pulumi.StringInput + // The description of the Trello card. You can use same placeholders as in card text + Description pulumi.StringInput + // The Trello list to which the card should be assigned + ListId pulumi.StringInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // The ID of the associated alerting profile + Profile pulumi.StringInput + // The Trello list to which the card of the resolved problem should be assigned + ResolvedListId pulumi.StringInput + // The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Text pulumi.StringInput +} + +func (TrrelloNotificationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*trrelloNotificationArgs)(nil)).Elem() +} + +type TrrelloNotificationInput interface { + pulumi.Input + + ToTrrelloNotificationOutput() TrrelloNotificationOutput + ToTrrelloNotificationOutputWithContext(ctx context.Context) TrrelloNotificationOutput +} + +func (*TrrelloNotification) ElementType() reflect.Type { + return reflect.TypeOf((**TrrelloNotification)(nil)).Elem() +} + +func (i *TrrelloNotification) ToTrrelloNotificationOutput() TrrelloNotificationOutput { + return i.ToTrrelloNotificationOutputWithContext(context.Background()) +} + +func (i *TrrelloNotification) ToTrrelloNotificationOutputWithContext(ctx context.Context) TrrelloNotificationOutput { + return pulumi.ToOutputWithContext(ctx, i).(TrrelloNotificationOutput) +} + +// TrrelloNotificationArrayInput is an input type that accepts TrrelloNotificationArray and TrrelloNotificationArrayOutput values. +// You can construct a concrete instance of `TrrelloNotificationArrayInput` via: +// +// TrrelloNotificationArray{ TrrelloNotificationArgs{...} } +type TrrelloNotificationArrayInput interface { + pulumi.Input + + ToTrrelloNotificationArrayOutput() TrrelloNotificationArrayOutput + ToTrrelloNotificationArrayOutputWithContext(context.Context) TrrelloNotificationArrayOutput +} + +type TrrelloNotificationArray []TrrelloNotificationInput + +func (TrrelloNotificationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*TrrelloNotification)(nil)).Elem() +} + +func (i TrrelloNotificationArray) ToTrrelloNotificationArrayOutput() TrrelloNotificationArrayOutput { + return i.ToTrrelloNotificationArrayOutputWithContext(context.Background()) +} + +func (i TrrelloNotificationArray) ToTrrelloNotificationArrayOutputWithContext(ctx context.Context) TrrelloNotificationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TrrelloNotificationArrayOutput) +} + +// TrrelloNotificationMapInput is an input type that accepts TrrelloNotificationMap and TrrelloNotificationMapOutput values. +// You can construct a concrete instance of `TrrelloNotificationMapInput` via: +// +// TrrelloNotificationMap{ "key": TrrelloNotificationArgs{...} } +type TrrelloNotificationMapInput interface { + pulumi.Input + + ToTrrelloNotificationMapOutput() TrrelloNotificationMapOutput + ToTrrelloNotificationMapOutputWithContext(context.Context) TrrelloNotificationMapOutput +} + +type TrrelloNotificationMap map[string]TrrelloNotificationInput + +func (TrrelloNotificationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*TrrelloNotification)(nil)).Elem() +} + +func (i TrrelloNotificationMap) ToTrrelloNotificationMapOutput() TrrelloNotificationMapOutput { + return i.ToTrrelloNotificationMapOutputWithContext(context.Background()) +} + +func (i TrrelloNotificationMap) ToTrrelloNotificationMapOutputWithContext(ctx context.Context) TrrelloNotificationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(TrrelloNotificationMapOutput) +} + +type TrrelloNotificationOutput struct{ *pulumi.OutputState } + +func (TrrelloNotificationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TrrelloNotification)(nil)).Elem() +} + +func (o TrrelloNotificationOutput) ToTrrelloNotificationOutput() TrrelloNotificationOutput { + return o +} + +func (o TrrelloNotificationOutput) ToTrrelloNotificationOutputWithContext(ctx context.Context) TrrelloNotificationOutput { + return o +} + +// The configuration is enabled (`true`) or disabled (`false`) +func (o TrrelloNotificationOutput) Active() pulumi.BoolOutput { + return o.ApplyT(func(v *TrrelloNotification) pulumi.BoolOutput { return v.Active }).(pulumi.BoolOutput) +} + +// The application key for the Trello account +func (o TrrelloNotificationOutput) ApplicationKey() pulumi.StringOutput { + return o.ApplyT(func(v *TrrelloNotification) pulumi.StringOutput { return v.ApplicationKey }).(pulumi.StringOutput) +} + +// The application token for the Trello account +func (o TrrelloNotificationOutput) AuthorizationToken() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TrrelloNotification) pulumi.StringPtrOutput { return v.AuthorizationToken }).(pulumi.StringPtrOutput) +} + +// The Trello board to which the card should be assigned +func (o TrrelloNotificationOutput) BoardId() pulumi.StringOutput { + return o.ApplyT(func(v *TrrelloNotification) pulumi.StringOutput { return v.BoardId }).(pulumi.StringOutput) +} + +// The description of the Trello card. You can use same placeholders as in card text +func (o TrrelloNotificationOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *TrrelloNotification) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +// The Trello list to which the card should be assigned +func (o TrrelloNotificationOutput) ListId() pulumi.StringOutput { + return o.ApplyT(func(v *TrrelloNotification) pulumi.StringOutput { return v.ListId }).(pulumi.StringOutput) +} + +// The name of the notification configuration +func (o TrrelloNotificationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *TrrelloNotification) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The ID of the associated alerting profile +func (o TrrelloNotificationOutput) Profile() pulumi.StringOutput { + return o.ApplyT(func(v *TrrelloNotification) pulumi.StringOutput { return v.Profile }).(pulumi.StringOutput) +} + +// The Trello list to which the card of the resolved problem should be assigned +func (o TrrelloNotificationOutput) ResolvedListId() pulumi.StringOutput { + return o.ApplyT(func(v *TrrelloNotification) pulumi.StringOutput { return v.ResolvedListId }).(pulumi.StringOutput) +} + +// The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas +func (o TrrelloNotificationOutput) Text() pulumi.StringOutput { + return o.ApplyT(func(v *TrrelloNotification) pulumi.StringOutput { return v.Text }).(pulumi.StringOutput) +} + +type TrrelloNotificationArrayOutput struct{ *pulumi.OutputState } + +func (TrrelloNotificationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*TrrelloNotification)(nil)).Elem() +} + +func (o TrrelloNotificationArrayOutput) ToTrrelloNotificationArrayOutput() TrrelloNotificationArrayOutput { + return o +} + +func (o TrrelloNotificationArrayOutput) ToTrrelloNotificationArrayOutputWithContext(ctx context.Context) TrrelloNotificationArrayOutput { + return o +} + +func (o TrrelloNotificationArrayOutput) Index(i pulumi.IntInput) TrrelloNotificationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *TrrelloNotification { + return vs[0].([]*TrrelloNotification)[vs[1].(int)] + }).(TrrelloNotificationOutput) +} + +type TrrelloNotificationMapOutput struct{ *pulumi.OutputState } + +func (TrrelloNotificationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*TrrelloNotification)(nil)).Elem() +} + +func (o TrrelloNotificationMapOutput) ToTrrelloNotificationMapOutput() TrrelloNotificationMapOutput { + return o +} + +func (o TrrelloNotificationMapOutput) ToTrrelloNotificationMapOutputWithContext(ctx context.Context) TrrelloNotificationMapOutput { + return o +} + +func (o TrrelloNotificationMapOutput) MapIndex(k pulumi.StringInput) TrrelloNotificationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *TrrelloNotification { + return vs[0].(map[string]*TrrelloNotification)[vs[1].(string)] + }).(TrrelloNotificationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*TrrelloNotificationInput)(nil)).Elem(), &TrrelloNotification{}) + pulumi.RegisterInputType(reflect.TypeOf((*TrrelloNotificationArrayInput)(nil)).Elem(), TrrelloNotificationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TrrelloNotificationMapInput)(nil)).Elem(), TrrelloNotificationMap{}) + pulumi.RegisterOutputType(TrrelloNotificationOutput{}) + pulumi.RegisterOutputType(TrrelloNotificationArrayOutput{}) + pulumi.RegisterOutputType(TrrelloNotificationMapOutput{}) +} diff --git a/sdk/go/dynatrace/victorOpsNotification.go b/sdk/go/dynatrace/victorOpsNotification.go new file mode 100644 index 00000000..21261465 --- /dev/null +++ b/sdk/go/dynatrace/victorOpsNotification.go @@ -0,0 +1,308 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dynatrace + +import ( + "context" + "reflect" + + "github.com/pkg/errors" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type VictorOpsNotification struct { + pulumi.CustomResourceState + + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolOutput `pulumi:"active"` + // The API key for the target VictorOps account + ApiKey pulumi.StringPtrOutput `pulumi:"apiKey"` + // The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + Message pulumi.StringOutput `pulumi:"message"` + // The name of the notification configuration + Name pulumi.StringOutput `pulumi:"name"` + // The ID of the associated alerting profile + Profile pulumi.StringOutput `pulumi:"profile"` + // The routing key, defining the group to be notified + RoutingKey pulumi.StringOutput `pulumi:"routingKey"` +} + +// NewVictorOpsNotification registers a new resource with the given unique name, arguments, and options. +func NewVictorOpsNotification(ctx *pulumi.Context, + name string, args *VictorOpsNotificationArgs, opts ...pulumi.ResourceOption) (*VictorOpsNotification, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Active == nil { + return nil, errors.New("invalid value for required argument 'Active'") + } + if args.Message == nil { + return nil, errors.New("invalid value for required argument 'Message'") + } + if args.Profile == nil { + return nil, errors.New("invalid value for required argument 'Profile'") + } + if args.RoutingKey == nil { + return nil, errors.New("invalid value for required argument 'RoutingKey'") + } + if args.ApiKey != nil { + args.ApiKey = pulumi.ToSecret(args.ApiKey).(pulumi.StringPtrOutput) + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "apiKey", + }) + opts = append(opts, secrets) + opts = pkgResourceDefaultOpts(opts) + var resource VictorOpsNotification + err := ctx.RegisterResource("dynatrace:index/victorOpsNotification:VictorOpsNotification", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetVictorOpsNotification gets an existing VictorOpsNotification resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetVictorOpsNotification(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *VictorOpsNotificationState, opts ...pulumi.ResourceOption) (*VictorOpsNotification, error) { + var resource VictorOpsNotification + err := ctx.ReadResource("dynatrace:index/victorOpsNotification:VictorOpsNotification", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering VictorOpsNotification resources. +type victorOpsNotificationState struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active *bool `pulumi:"active"` + // The API key for the target VictorOps account + ApiKey *string `pulumi:"apiKey"` + // The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + Message *string `pulumi:"message"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // The ID of the associated alerting profile + Profile *string `pulumi:"profile"` + // The routing key, defining the group to be notified + RoutingKey *string `pulumi:"routingKey"` +} + +type VictorOpsNotificationState struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolPtrInput + // The API key for the target VictorOps account + ApiKey pulumi.StringPtrInput + // The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + Message pulumi.StringPtrInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // The ID of the associated alerting profile + Profile pulumi.StringPtrInput + // The routing key, defining the group to be notified + RoutingKey pulumi.StringPtrInput +} + +func (VictorOpsNotificationState) ElementType() reflect.Type { + return reflect.TypeOf((*victorOpsNotificationState)(nil)).Elem() +} + +type victorOpsNotificationArgs struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active bool `pulumi:"active"` + // The API key for the target VictorOps account + ApiKey *string `pulumi:"apiKey"` + // The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + Message string `pulumi:"message"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // The ID of the associated alerting profile + Profile string `pulumi:"profile"` + // The routing key, defining the group to be notified + RoutingKey string `pulumi:"routingKey"` +} + +// The set of arguments for constructing a VictorOpsNotification resource. +type VictorOpsNotificationArgs struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolInput + // The API key for the target VictorOps account + ApiKey pulumi.StringPtrInput + // The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + Message pulumi.StringInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // The ID of the associated alerting profile + Profile pulumi.StringInput + // The routing key, defining the group to be notified + RoutingKey pulumi.StringInput +} + +func (VictorOpsNotificationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*victorOpsNotificationArgs)(nil)).Elem() +} + +type VictorOpsNotificationInput interface { + pulumi.Input + + ToVictorOpsNotificationOutput() VictorOpsNotificationOutput + ToVictorOpsNotificationOutputWithContext(ctx context.Context) VictorOpsNotificationOutput +} + +func (*VictorOpsNotification) ElementType() reflect.Type { + return reflect.TypeOf((**VictorOpsNotification)(nil)).Elem() +} + +func (i *VictorOpsNotification) ToVictorOpsNotificationOutput() VictorOpsNotificationOutput { + return i.ToVictorOpsNotificationOutputWithContext(context.Background()) +} + +func (i *VictorOpsNotification) ToVictorOpsNotificationOutputWithContext(ctx context.Context) VictorOpsNotificationOutput { + return pulumi.ToOutputWithContext(ctx, i).(VictorOpsNotificationOutput) +} + +// VictorOpsNotificationArrayInput is an input type that accepts VictorOpsNotificationArray and VictorOpsNotificationArrayOutput values. +// You can construct a concrete instance of `VictorOpsNotificationArrayInput` via: +// +// VictorOpsNotificationArray{ VictorOpsNotificationArgs{...} } +type VictorOpsNotificationArrayInput interface { + pulumi.Input + + ToVictorOpsNotificationArrayOutput() VictorOpsNotificationArrayOutput + ToVictorOpsNotificationArrayOutputWithContext(context.Context) VictorOpsNotificationArrayOutput +} + +type VictorOpsNotificationArray []VictorOpsNotificationInput + +func (VictorOpsNotificationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*VictorOpsNotification)(nil)).Elem() +} + +func (i VictorOpsNotificationArray) ToVictorOpsNotificationArrayOutput() VictorOpsNotificationArrayOutput { + return i.ToVictorOpsNotificationArrayOutputWithContext(context.Background()) +} + +func (i VictorOpsNotificationArray) ToVictorOpsNotificationArrayOutputWithContext(ctx context.Context) VictorOpsNotificationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VictorOpsNotificationArrayOutput) +} + +// VictorOpsNotificationMapInput is an input type that accepts VictorOpsNotificationMap and VictorOpsNotificationMapOutput values. +// You can construct a concrete instance of `VictorOpsNotificationMapInput` via: +// +// VictorOpsNotificationMap{ "key": VictorOpsNotificationArgs{...} } +type VictorOpsNotificationMapInput interface { + pulumi.Input + + ToVictorOpsNotificationMapOutput() VictorOpsNotificationMapOutput + ToVictorOpsNotificationMapOutputWithContext(context.Context) VictorOpsNotificationMapOutput +} + +type VictorOpsNotificationMap map[string]VictorOpsNotificationInput + +func (VictorOpsNotificationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*VictorOpsNotification)(nil)).Elem() +} + +func (i VictorOpsNotificationMap) ToVictorOpsNotificationMapOutput() VictorOpsNotificationMapOutput { + return i.ToVictorOpsNotificationMapOutputWithContext(context.Background()) +} + +func (i VictorOpsNotificationMap) ToVictorOpsNotificationMapOutputWithContext(ctx context.Context) VictorOpsNotificationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(VictorOpsNotificationMapOutput) +} + +type VictorOpsNotificationOutput struct{ *pulumi.OutputState } + +func (VictorOpsNotificationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VictorOpsNotification)(nil)).Elem() +} + +func (o VictorOpsNotificationOutput) ToVictorOpsNotificationOutput() VictorOpsNotificationOutput { + return o +} + +func (o VictorOpsNotificationOutput) ToVictorOpsNotificationOutputWithContext(ctx context.Context) VictorOpsNotificationOutput { + return o +} + +// The configuration is enabled (`true`) or disabled (`false`) +func (o VictorOpsNotificationOutput) Active() pulumi.BoolOutput { + return o.ApplyT(func(v *VictorOpsNotification) pulumi.BoolOutput { return v.Active }).(pulumi.BoolOutput) +} + +// The API key for the target VictorOps account +func (o VictorOpsNotificationOutput) ApiKey() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VictorOpsNotification) pulumi.StringPtrOutput { return v.ApiKey }).(pulumi.StringPtrOutput) +} + +// The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` +func (o VictorOpsNotificationOutput) Message() pulumi.StringOutput { + return o.ApplyT(func(v *VictorOpsNotification) pulumi.StringOutput { return v.Message }).(pulumi.StringOutput) +} + +// The name of the notification configuration +func (o VictorOpsNotificationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *VictorOpsNotification) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The ID of the associated alerting profile +func (o VictorOpsNotificationOutput) Profile() pulumi.StringOutput { + return o.ApplyT(func(v *VictorOpsNotification) pulumi.StringOutput { return v.Profile }).(pulumi.StringOutput) +} + +// The routing key, defining the group to be notified +func (o VictorOpsNotificationOutput) RoutingKey() pulumi.StringOutput { + return o.ApplyT(func(v *VictorOpsNotification) pulumi.StringOutput { return v.RoutingKey }).(pulumi.StringOutput) +} + +type VictorOpsNotificationArrayOutput struct{ *pulumi.OutputState } + +func (VictorOpsNotificationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*VictorOpsNotification)(nil)).Elem() +} + +func (o VictorOpsNotificationArrayOutput) ToVictorOpsNotificationArrayOutput() VictorOpsNotificationArrayOutput { + return o +} + +func (o VictorOpsNotificationArrayOutput) ToVictorOpsNotificationArrayOutputWithContext(ctx context.Context) VictorOpsNotificationArrayOutput { + return o +} + +func (o VictorOpsNotificationArrayOutput) Index(i pulumi.IntInput) VictorOpsNotificationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *VictorOpsNotification { + return vs[0].([]*VictorOpsNotification)[vs[1].(int)] + }).(VictorOpsNotificationOutput) +} + +type VictorOpsNotificationMapOutput struct{ *pulumi.OutputState } + +func (VictorOpsNotificationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*VictorOpsNotification)(nil)).Elem() +} + +func (o VictorOpsNotificationMapOutput) ToVictorOpsNotificationMapOutput() VictorOpsNotificationMapOutput { + return o +} + +func (o VictorOpsNotificationMapOutput) ToVictorOpsNotificationMapOutputWithContext(ctx context.Context) VictorOpsNotificationMapOutput { + return o +} + +func (o VictorOpsNotificationMapOutput) MapIndex(k pulumi.StringInput) VictorOpsNotificationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *VictorOpsNotification { + return vs[0].(map[string]*VictorOpsNotification)[vs[1].(string)] + }).(VictorOpsNotificationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*VictorOpsNotificationInput)(nil)).Elem(), &VictorOpsNotification{}) + pulumi.RegisterInputType(reflect.TypeOf((*VictorOpsNotificationArrayInput)(nil)).Elem(), VictorOpsNotificationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VictorOpsNotificationMapInput)(nil)).Elem(), VictorOpsNotificationMap{}) + pulumi.RegisterOutputType(VictorOpsNotificationOutput{}) + pulumi.RegisterOutputType(VictorOpsNotificationArrayOutput{}) + pulumi.RegisterOutputType(VictorOpsNotificationMapOutput{}) +} diff --git a/sdk/go/dynatrace/webhookNotification.go b/sdk/go/dynatrace/webhookNotification.go new file mode 100644 index 00000000..c33923e1 --- /dev/null +++ b/sdk/go/dynatrace/webhookNotification.go @@ -0,0 +1,346 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dynatrace + +import ( + "context" + "reflect" + + "github.com/pkg/errors" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type WebhookNotification struct { + pulumi.CustomResourceState + + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolOutput `pulumi:"active"` + // A list of the additional HTTP headers + Headers WebhookNotificationHeadersPtrOutput `pulumi:"headers"` + // Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + Insecure pulumi.BoolPtrOutput `pulumi:"insecure"` + // The name of the notification configuration + Name pulumi.StringOutput `pulumi:"name"` + // Send email if problem is closed + NotifyClosedProblems pulumi.BoolPtrOutput `pulumi:"notifyClosedProblems"` + // Call webhook if new events merge into existing problems + NotifyEventMerges pulumi.BoolPtrOutput `pulumi:"notifyEventMerges"` + // The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Payload pulumi.StringOutput `pulumi:"payload"` + // The ID of the associated alerting profile + Profile pulumi.StringOutput `pulumi:"profile"` + // The URL of the WebHook endpoint + Url pulumi.StringOutput `pulumi:"url"` +} + +// NewWebhookNotification registers a new resource with the given unique name, arguments, and options. +func NewWebhookNotification(ctx *pulumi.Context, + name string, args *WebhookNotificationArgs, opts ...pulumi.ResourceOption) (*WebhookNotification, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Active == nil { + return nil, errors.New("invalid value for required argument 'Active'") + } + if args.Payload == nil { + return nil, errors.New("invalid value for required argument 'Payload'") + } + if args.Profile == nil { + return nil, errors.New("invalid value for required argument 'Profile'") + } + if args.Url == nil { + return nil, errors.New("invalid value for required argument 'Url'") + } + opts = pkgResourceDefaultOpts(opts) + var resource WebhookNotification + err := ctx.RegisterResource("dynatrace:index/webhookNotification:WebhookNotification", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetWebhookNotification gets an existing WebhookNotification resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetWebhookNotification(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *WebhookNotificationState, opts ...pulumi.ResourceOption) (*WebhookNotification, error) { + var resource WebhookNotification + err := ctx.ReadResource("dynatrace:index/webhookNotification:WebhookNotification", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering WebhookNotification resources. +type webhookNotificationState struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active *bool `pulumi:"active"` + // A list of the additional HTTP headers + Headers *WebhookNotificationHeaders `pulumi:"headers"` + // Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + Insecure *bool `pulumi:"insecure"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // Send email if problem is closed + NotifyClosedProblems *bool `pulumi:"notifyClosedProblems"` + // Call webhook if new events merge into existing problems + NotifyEventMerges *bool `pulumi:"notifyEventMerges"` + // The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Payload *string `pulumi:"payload"` + // The ID of the associated alerting profile + Profile *string `pulumi:"profile"` + // The URL of the WebHook endpoint + Url *string `pulumi:"url"` +} + +type WebhookNotificationState struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolPtrInput + // A list of the additional HTTP headers + Headers WebhookNotificationHeadersPtrInput + // Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + Insecure pulumi.BoolPtrInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // Send email if problem is closed + NotifyClosedProblems pulumi.BoolPtrInput + // Call webhook if new events merge into existing problems + NotifyEventMerges pulumi.BoolPtrInput + // The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Payload pulumi.StringPtrInput + // The ID of the associated alerting profile + Profile pulumi.StringPtrInput + // The URL of the WebHook endpoint + Url pulumi.StringPtrInput +} + +func (WebhookNotificationState) ElementType() reflect.Type { + return reflect.TypeOf((*webhookNotificationState)(nil)).Elem() +} + +type webhookNotificationArgs struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active bool `pulumi:"active"` + // A list of the additional HTTP headers + Headers *WebhookNotificationHeaders `pulumi:"headers"` + // Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + Insecure *bool `pulumi:"insecure"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // Send email if problem is closed + NotifyClosedProblems *bool `pulumi:"notifyClosedProblems"` + // Call webhook if new events merge into existing problems + NotifyEventMerges *bool `pulumi:"notifyEventMerges"` + // The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Payload string `pulumi:"payload"` + // The ID of the associated alerting profile + Profile string `pulumi:"profile"` + // The URL of the WebHook endpoint + Url string `pulumi:"url"` +} + +// The set of arguments for constructing a WebhookNotification resource. +type WebhookNotificationArgs struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolInput + // A list of the additional HTTP headers + Headers WebhookNotificationHeadersPtrInput + // Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + Insecure pulumi.BoolPtrInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // Send email if problem is closed + NotifyClosedProblems pulumi.BoolPtrInput + // Call webhook if new events merge into existing problems + NotifyEventMerges pulumi.BoolPtrInput + // The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Payload pulumi.StringInput + // The ID of the associated alerting profile + Profile pulumi.StringInput + // The URL of the WebHook endpoint + Url pulumi.StringInput +} + +func (WebhookNotificationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*webhookNotificationArgs)(nil)).Elem() +} + +type WebhookNotificationInput interface { + pulumi.Input + + ToWebhookNotificationOutput() WebhookNotificationOutput + ToWebhookNotificationOutputWithContext(ctx context.Context) WebhookNotificationOutput +} + +func (*WebhookNotification) ElementType() reflect.Type { + return reflect.TypeOf((**WebhookNotification)(nil)).Elem() +} + +func (i *WebhookNotification) ToWebhookNotificationOutput() WebhookNotificationOutput { + return i.ToWebhookNotificationOutputWithContext(context.Background()) +} + +func (i *WebhookNotification) ToWebhookNotificationOutputWithContext(ctx context.Context) WebhookNotificationOutput { + return pulumi.ToOutputWithContext(ctx, i).(WebhookNotificationOutput) +} + +// WebhookNotificationArrayInput is an input type that accepts WebhookNotificationArray and WebhookNotificationArrayOutput values. +// You can construct a concrete instance of `WebhookNotificationArrayInput` via: +// +// WebhookNotificationArray{ WebhookNotificationArgs{...} } +type WebhookNotificationArrayInput interface { + pulumi.Input + + ToWebhookNotificationArrayOutput() WebhookNotificationArrayOutput + ToWebhookNotificationArrayOutputWithContext(context.Context) WebhookNotificationArrayOutput +} + +type WebhookNotificationArray []WebhookNotificationInput + +func (WebhookNotificationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*WebhookNotification)(nil)).Elem() +} + +func (i WebhookNotificationArray) ToWebhookNotificationArrayOutput() WebhookNotificationArrayOutput { + return i.ToWebhookNotificationArrayOutputWithContext(context.Background()) +} + +func (i WebhookNotificationArray) ToWebhookNotificationArrayOutputWithContext(ctx context.Context) WebhookNotificationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(WebhookNotificationArrayOutput) +} + +// WebhookNotificationMapInput is an input type that accepts WebhookNotificationMap and WebhookNotificationMapOutput values. +// You can construct a concrete instance of `WebhookNotificationMapInput` via: +// +// WebhookNotificationMap{ "key": WebhookNotificationArgs{...} } +type WebhookNotificationMapInput interface { + pulumi.Input + + ToWebhookNotificationMapOutput() WebhookNotificationMapOutput + ToWebhookNotificationMapOutputWithContext(context.Context) WebhookNotificationMapOutput +} + +type WebhookNotificationMap map[string]WebhookNotificationInput + +func (WebhookNotificationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*WebhookNotification)(nil)).Elem() +} + +func (i WebhookNotificationMap) ToWebhookNotificationMapOutput() WebhookNotificationMapOutput { + return i.ToWebhookNotificationMapOutputWithContext(context.Background()) +} + +func (i WebhookNotificationMap) ToWebhookNotificationMapOutputWithContext(ctx context.Context) WebhookNotificationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(WebhookNotificationMapOutput) +} + +type WebhookNotificationOutput struct{ *pulumi.OutputState } + +func (WebhookNotificationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**WebhookNotification)(nil)).Elem() +} + +func (o WebhookNotificationOutput) ToWebhookNotificationOutput() WebhookNotificationOutput { + return o +} + +func (o WebhookNotificationOutput) ToWebhookNotificationOutputWithContext(ctx context.Context) WebhookNotificationOutput { + return o +} + +// The configuration is enabled (`true`) or disabled (`false`) +func (o WebhookNotificationOutput) Active() pulumi.BoolOutput { + return o.ApplyT(func(v *WebhookNotification) pulumi.BoolOutput { return v.Active }).(pulumi.BoolOutput) +} + +// A list of the additional HTTP headers +func (o WebhookNotificationOutput) Headers() WebhookNotificationHeadersPtrOutput { + return o.ApplyT(func(v *WebhookNotification) WebhookNotificationHeadersPtrOutput { return v.Headers }).(WebhookNotificationHeadersPtrOutput) +} + +// Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates +func (o WebhookNotificationOutput) Insecure() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *WebhookNotification) pulumi.BoolPtrOutput { return v.Insecure }).(pulumi.BoolPtrOutput) +} + +// The name of the notification configuration +func (o WebhookNotificationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *WebhookNotification) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Send email if problem is closed +func (o WebhookNotificationOutput) NotifyClosedProblems() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *WebhookNotification) pulumi.BoolPtrOutput { return v.NotifyClosedProblems }).(pulumi.BoolPtrOutput) +} + +// Call webhook if new events merge into existing problems +func (o WebhookNotificationOutput) NotifyEventMerges() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *WebhookNotification) pulumi.BoolPtrOutput { return v.NotifyEventMerges }).(pulumi.BoolPtrOutput) +} + +// The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas +func (o WebhookNotificationOutput) Payload() pulumi.StringOutput { + return o.ApplyT(func(v *WebhookNotification) pulumi.StringOutput { return v.Payload }).(pulumi.StringOutput) +} + +// The ID of the associated alerting profile +func (o WebhookNotificationOutput) Profile() pulumi.StringOutput { + return o.ApplyT(func(v *WebhookNotification) pulumi.StringOutput { return v.Profile }).(pulumi.StringOutput) +} + +// The URL of the WebHook endpoint +func (o WebhookNotificationOutput) Url() pulumi.StringOutput { + return o.ApplyT(func(v *WebhookNotification) pulumi.StringOutput { return v.Url }).(pulumi.StringOutput) +} + +type WebhookNotificationArrayOutput struct{ *pulumi.OutputState } + +func (WebhookNotificationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*WebhookNotification)(nil)).Elem() +} + +func (o WebhookNotificationArrayOutput) ToWebhookNotificationArrayOutput() WebhookNotificationArrayOutput { + return o +} + +func (o WebhookNotificationArrayOutput) ToWebhookNotificationArrayOutputWithContext(ctx context.Context) WebhookNotificationArrayOutput { + return o +} + +func (o WebhookNotificationArrayOutput) Index(i pulumi.IntInput) WebhookNotificationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *WebhookNotification { + return vs[0].([]*WebhookNotification)[vs[1].(int)] + }).(WebhookNotificationOutput) +} + +type WebhookNotificationMapOutput struct{ *pulumi.OutputState } + +func (WebhookNotificationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*WebhookNotification)(nil)).Elem() +} + +func (o WebhookNotificationMapOutput) ToWebhookNotificationMapOutput() WebhookNotificationMapOutput { + return o +} + +func (o WebhookNotificationMapOutput) ToWebhookNotificationMapOutputWithContext(ctx context.Context) WebhookNotificationMapOutput { + return o +} + +func (o WebhookNotificationMapOutput) MapIndex(k pulumi.StringInput) WebhookNotificationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *WebhookNotification { + return vs[0].(map[string]*WebhookNotification)[vs[1].(string)] + }).(WebhookNotificationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*WebhookNotificationInput)(nil)).Elem(), &WebhookNotification{}) + pulumi.RegisterInputType(reflect.TypeOf((*WebhookNotificationArrayInput)(nil)).Elem(), WebhookNotificationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*WebhookNotificationMapInput)(nil)).Elem(), WebhookNotificationMap{}) + pulumi.RegisterOutputType(WebhookNotificationOutput{}) + pulumi.RegisterOutputType(WebhookNotificationArrayOutput{}) + pulumi.RegisterOutputType(WebhookNotificationMapOutput{}) +} diff --git a/sdk/go/dynatrace/xmattersNotification.go b/sdk/go/dynatrace/xmattersNotification.go new file mode 100644 index 00000000..1f5c4faa --- /dev/null +++ b/sdk/go/dynatrace/xmattersNotification.go @@ -0,0 +1,316 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package dynatrace + +import ( + "context" + "reflect" + + "github.com/pkg/errors" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type XmattersNotification struct { + pulumi.CustomResourceState + + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolOutput `pulumi:"active"` + // A list of the additional HTTP headers + Headers XmattersNotificationHeadersPtrOutput `pulumi:"headers"` + // Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + Insecure pulumi.BoolPtrOutput `pulumi:"insecure"` + // The name of the notification configuration + Name pulumi.StringOutput `pulumi:"name"` + // The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Payload pulumi.StringOutput `pulumi:"payload"` + // The ID of the associated alerting profile + Profile pulumi.StringOutput `pulumi:"profile"` + // The URL of the WebHook endpoint + Url pulumi.StringOutput `pulumi:"url"` +} + +// NewXmattersNotification registers a new resource with the given unique name, arguments, and options. +func NewXmattersNotification(ctx *pulumi.Context, + name string, args *XmattersNotificationArgs, opts ...pulumi.ResourceOption) (*XmattersNotification, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Active == nil { + return nil, errors.New("invalid value for required argument 'Active'") + } + if args.Payload == nil { + return nil, errors.New("invalid value for required argument 'Payload'") + } + if args.Profile == nil { + return nil, errors.New("invalid value for required argument 'Profile'") + } + if args.Url == nil { + return nil, errors.New("invalid value for required argument 'Url'") + } + opts = pkgResourceDefaultOpts(opts) + var resource XmattersNotification + err := ctx.RegisterResource("dynatrace:index/xmattersNotification:XmattersNotification", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetXmattersNotification gets an existing XmattersNotification resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetXmattersNotification(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *XmattersNotificationState, opts ...pulumi.ResourceOption) (*XmattersNotification, error) { + var resource XmattersNotification + err := ctx.ReadResource("dynatrace:index/xmattersNotification:XmattersNotification", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering XmattersNotification resources. +type xmattersNotificationState struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active *bool `pulumi:"active"` + // A list of the additional HTTP headers + Headers *XmattersNotificationHeaders `pulumi:"headers"` + // Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + Insecure *bool `pulumi:"insecure"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Payload *string `pulumi:"payload"` + // The ID of the associated alerting profile + Profile *string `pulumi:"profile"` + // The URL of the WebHook endpoint + Url *string `pulumi:"url"` +} + +type XmattersNotificationState struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolPtrInput + // A list of the additional HTTP headers + Headers XmattersNotificationHeadersPtrInput + // Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + Insecure pulumi.BoolPtrInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Payload pulumi.StringPtrInput + // The ID of the associated alerting profile + Profile pulumi.StringPtrInput + // The URL of the WebHook endpoint + Url pulumi.StringPtrInput +} + +func (XmattersNotificationState) ElementType() reflect.Type { + return reflect.TypeOf((*xmattersNotificationState)(nil)).Elem() +} + +type xmattersNotificationArgs struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active bool `pulumi:"active"` + // A list of the additional HTTP headers + Headers *XmattersNotificationHeaders `pulumi:"headers"` + // Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + Insecure *bool `pulumi:"insecure"` + // The name of the notification configuration + Name *string `pulumi:"name"` + // The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Payload string `pulumi:"payload"` + // The ID of the associated alerting profile + Profile string `pulumi:"profile"` + // The URL of the WebHook endpoint + Url string `pulumi:"url"` +} + +// The set of arguments for constructing a XmattersNotification resource. +type XmattersNotificationArgs struct { + // The configuration is enabled (`true`) or disabled (`false`) + Active pulumi.BoolInput + // A list of the additional HTTP headers + Headers XmattersNotificationHeadersPtrInput + // Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + Insecure pulumi.BoolPtrInput + // The name of the notification configuration + Name pulumi.StringPtrInput + // The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + Payload pulumi.StringInput + // The ID of the associated alerting profile + Profile pulumi.StringInput + // The URL of the WebHook endpoint + Url pulumi.StringInput +} + +func (XmattersNotificationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*xmattersNotificationArgs)(nil)).Elem() +} + +type XmattersNotificationInput interface { + pulumi.Input + + ToXmattersNotificationOutput() XmattersNotificationOutput + ToXmattersNotificationOutputWithContext(ctx context.Context) XmattersNotificationOutput +} + +func (*XmattersNotification) ElementType() reflect.Type { + return reflect.TypeOf((**XmattersNotification)(nil)).Elem() +} + +func (i *XmattersNotification) ToXmattersNotificationOutput() XmattersNotificationOutput { + return i.ToXmattersNotificationOutputWithContext(context.Background()) +} + +func (i *XmattersNotification) ToXmattersNotificationOutputWithContext(ctx context.Context) XmattersNotificationOutput { + return pulumi.ToOutputWithContext(ctx, i).(XmattersNotificationOutput) +} + +// XmattersNotificationArrayInput is an input type that accepts XmattersNotificationArray and XmattersNotificationArrayOutput values. +// You can construct a concrete instance of `XmattersNotificationArrayInput` via: +// +// XmattersNotificationArray{ XmattersNotificationArgs{...} } +type XmattersNotificationArrayInput interface { + pulumi.Input + + ToXmattersNotificationArrayOutput() XmattersNotificationArrayOutput + ToXmattersNotificationArrayOutputWithContext(context.Context) XmattersNotificationArrayOutput +} + +type XmattersNotificationArray []XmattersNotificationInput + +func (XmattersNotificationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*XmattersNotification)(nil)).Elem() +} + +func (i XmattersNotificationArray) ToXmattersNotificationArrayOutput() XmattersNotificationArrayOutput { + return i.ToXmattersNotificationArrayOutputWithContext(context.Background()) +} + +func (i XmattersNotificationArray) ToXmattersNotificationArrayOutputWithContext(ctx context.Context) XmattersNotificationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(XmattersNotificationArrayOutput) +} + +// XmattersNotificationMapInput is an input type that accepts XmattersNotificationMap and XmattersNotificationMapOutput values. +// You can construct a concrete instance of `XmattersNotificationMapInput` via: +// +// XmattersNotificationMap{ "key": XmattersNotificationArgs{...} } +type XmattersNotificationMapInput interface { + pulumi.Input + + ToXmattersNotificationMapOutput() XmattersNotificationMapOutput + ToXmattersNotificationMapOutputWithContext(context.Context) XmattersNotificationMapOutput +} + +type XmattersNotificationMap map[string]XmattersNotificationInput + +func (XmattersNotificationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*XmattersNotification)(nil)).Elem() +} + +func (i XmattersNotificationMap) ToXmattersNotificationMapOutput() XmattersNotificationMapOutput { + return i.ToXmattersNotificationMapOutputWithContext(context.Background()) +} + +func (i XmattersNotificationMap) ToXmattersNotificationMapOutputWithContext(ctx context.Context) XmattersNotificationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(XmattersNotificationMapOutput) +} + +type XmattersNotificationOutput struct{ *pulumi.OutputState } + +func (XmattersNotificationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**XmattersNotification)(nil)).Elem() +} + +func (o XmattersNotificationOutput) ToXmattersNotificationOutput() XmattersNotificationOutput { + return o +} + +func (o XmattersNotificationOutput) ToXmattersNotificationOutputWithContext(ctx context.Context) XmattersNotificationOutput { + return o +} + +// The configuration is enabled (`true`) or disabled (`false`) +func (o XmattersNotificationOutput) Active() pulumi.BoolOutput { + return o.ApplyT(func(v *XmattersNotification) pulumi.BoolOutput { return v.Active }).(pulumi.BoolOutput) +} + +// A list of the additional HTTP headers +func (o XmattersNotificationOutput) Headers() XmattersNotificationHeadersPtrOutput { + return o.ApplyT(func(v *XmattersNotification) XmattersNotificationHeadersPtrOutput { return v.Headers }).(XmattersNotificationHeadersPtrOutput) +} + +// Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates +func (o XmattersNotificationOutput) Insecure() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *XmattersNotification) pulumi.BoolPtrOutput { return v.Insecure }).(pulumi.BoolPtrOutput) +} + +// The name of the notification configuration +func (o XmattersNotificationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *XmattersNotification) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas +func (o XmattersNotificationOutput) Payload() pulumi.StringOutput { + return o.ApplyT(func(v *XmattersNotification) pulumi.StringOutput { return v.Payload }).(pulumi.StringOutput) +} + +// The ID of the associated alerting profile +func (o XmattersNotificationOutput) Profile() pulumi.StringOutput { + return o.ApplyT(func(v *XmattersNotification) pulumi.StringOutput { return v.Profile }).(pulumi.StringOutput) +} + +// The URL of the WebHook endpoint +func (o XmattersNotificationOutput) Url() pulumi.StringOutput { + return o.ApplyT(func(v *XmattersNotification) pulumi.StringOutput { return v.Url }).(pulumi.StringOutput) +} + +type XmattersNotificationArrayOutput struct{ *pulumi.OutputState } + +func (XmattersNotificationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*XmattersNotification)(nil)).Elem() +} + +func (o XmattersNotificationArrayOutput) ToXmattersNotificationArrayOutput() XmattersNotificationArrayOutput { + return o +} + +func (o XmattersNotificationArrayOutput) ToXmattersNotificationArrayOutputWithContext(ctx context.Context) XmattersNotificationArrayOutput { + return o +} + +func (o XmattersNotificationArrayOutput) Index(i pulumi.IntInput) XmattersNotificationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *XmattersNotification { + return vs[0].([]*XmattersNotification)[vs[1].(int)] + }).(XmattersNotificationOutput) +} + +type XmattersNotificationMapOutput struct{ *pulumi.OutputState } + +func (XmattersNotificationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*XmattersNotification)(nil)).Elem() +} + +func (o XmattersNotificationMapOutput) ToXmattersNotificationMapOutput() XmattersNotificationMapOutput { + return o +} + +func (o XmattersNotificationMapOutput) ToXmattersNotificationMapOutputWithContext(ctx context.Context) XmattersNotificationMapOutput { + return o +} + +func (o XmattersNotificationMapOutput) MapIndex(k pulumi.StringInput) XmattersNotificationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *XmattersNotification { + return vs[0].(map[string]*XmattersNotification)[vs[1].(string)] + }).(XmattersNotificationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*XmattersNotificationInput)(nil)).Elem(), &XmattersNotification{}) + pulumi.RegisterInputType(reflect.TypeOf((*XmattersNotificationArrayInput)(nil)).Elem(), XmattersNotificationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*XmattersNotificationMapInput)(nil)).Elem(), XmattersNotificationMap{}) + pulumi.RegisterOutputType(XmattersNotificationOutput{}) + pulumi.RegisterOutputType(XmattersNotificationArrayOutput{}) + pulumi.RegisterOutputType(XmattersNotificationMapOutput{}) +} diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/AnsibleTowerNotification.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/AnsibleTowerNotification.class new file mode 100644 index 0000000000000000000000000000000000000000..ef0e63883a88f6b9318f1fd38081cb66d0b2b4c1 GIT binary patch literal 5728 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 Pb!wD{ui`z_vfBRvMJ>|= literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/AnsibleTowerNotificationArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/AnsibleTowerNotificationArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..02422c0ce5092899bfaf8ed1d700c1a8a0bb18cf GIT binary patch literal 3937 zcmbtWNpl-T6#iOXv_!ETB`6ytO331PiL#KyiDTJP794PF6E8^s10$*Jj2X>{(M*Hj`E~9&l?lXFq z(R+;EXSBfRgBU*K3?D_I#ZZi)6hk=*8O5T2I3{p@qGVOFRo8GUdba$;)ErwY$!y-N z=|w}%T92eXX*v3$UeX-hGV}IQZCIf5s&48|PN1##)Vx6ZHLENIx+io~PP&z%v}ZM1 zEs&b9N}4gR**cH?V7v1`uL(p8u5Og2Es(rrn$o^zXtkQ8ABMLs>6p(&(k}LHefcn( zh?V7{<{Azu=+sJ%{*d&~ts^U0w#-hsPStgWPi;MmB66R)TBQ|8uP@n?YNKp}A#1Kq zENc(7tf84p*@9&mQZt8hREYSDzC^FnwaLeFn2*+rw`cC?9oKa9ik#QIJv6P^T17h2 z&YPy?c)N&7e9%+j<5tZ{;wWAhIJ@PZmP7_eqF74e0d!{RPht?+B$n|pqti(Y@oehlXg6Wnr1U&SqXOCp0X==sA^Ltm*> zj&6K`6EsTJ*We`jXvBQ|KHm(@i%@LuDqsH#bi735IXYX=eo526LK zQsf*(A~=sX=sU^@FA(6g7wO4qNBp$$KJpX$4sp&}FHk2<0e)06##b}OiQ*FdPOp$0 zL|QsXG&%U09Q>m2sSc9RW#iR0nwxDLTc4(KimI2hZ=!C0t+-9ZP(m5i!`G2a1Qn;{!#Pm_Zz zIXI*6sSfB44milKb0Fw~4%;}d1Vvv_lBlBdzG%APLqw;WL|-S-HxxcqH2qx&h%N*~ z7eYnv4T_#plBl8!zUXVXPRY1meM)s@yrN%;qr zs=gmmrS?ChYOPd>lpoL^RrTKWg4gzfAYbmx&YU^-+{cXe-~XOI2k;iQGw4Mzi$yH) z>|HkRu~}xb!e*7t8k_Yj`mvG1`&o2jgUtsiY-VX^gSS6S;Uj_6il-YDX$#~wO;g&d zhUz%d5$Ia4*4$%(`I2T;m6~UGRb8nZo2qN8npBoeN8dN(uJuUTWy{qMbWL@2%Ure( zodtoUs=4|@DR4b}T(fMcYFQOvr~5LNP1ACH|D-(M!KF60mCb6+ve|vYRIB89$oKH2(!?lb&oER9jzB${ z=eSmNOFE8vNa&dk?nXFaojb0rn}@#4v@O5zbX!*9R6Ze))=fuhe#E^;*8Z-n)(q8^ zAKM1))hP3iEW1KQsoBy|S@x>? z(%xnD0#{3xrW$*yt@C%Vm~cPWDM{;*Y{d(N*DM1U;s)`A8l<(tvuAFek*~EER&|Ztiaby~ z!=-|!i<%K+CA(vJwk9|H4jVo1CeQNi6X-5W$K8_LT22lFxRydGhb@$I7{Rq1#@LLr z8D^7bGr?w(&Fh#GxF2eg%VmxU?h4FZnjnXl@ruA`=%6hfKXgZV5X|_!qMPEsGA$QN zAZs0*yaWP;Lg*#h-anF>yAXLFF-LD}KVA0>23Y{jVw^Iv*Zuh*ZqV3A-$M`>c4+fe ze}hta3cBfot`J~|)(A9$Tc2W-=9KGGR0q{qKt;7U1$9u3pHNY;+E5`?!vPf)^K4K) z08z2qKq2W9C;q4#&PGi(P(2j#0A3?pfs%5Uz66cw>AxZVLF}=gs422ZfBhz=X`X9f zaNEyzBg-?iHiA0=k3wI}(?vY-c9Pi;NmmQWEFBt)6qAS$vl!w@xA3r-@klXU?P5wH zl1?$hkz$e&Vm=G;w2I+ec}*mPa{jD-ynf+sawCJcj0?_Du19l{D>L+gg5XriueU<_|+FU z&=3(c5y`Mb8bcjFnlKY4;2=Sze_{mn<;3()h3(~MpvMpJM-?dknJ zl$i|uYVyOC#@nZ99S_`fKSM9M>-!5=IKHsQe)4gj)?#=E3p6HZw;M0fEbGsDaTSCA E1B`PfumAu6 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/DynatraceFunctions.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/DynatraceFunctions.class index 4e8bf48afe664893110a61fae914ff223a306c0f..303b8f370ab2e5f3f05c61618c275fe9f808077e 100644 GIT binary patch literal 23377 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 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/EmailNotification.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/EmailNotification.class new file mode 100644 index 0000000000000000000000000000000000000000..c6ea367e8bd44ae70366277e27008cf39c72aefb GIT binary patch literal 5714 zcmb_gS##V(5dO4YNA^aEgA*r?!{v~Gy1zfbP*+8trPmCgj0AlBVbDZ@PPWdi~emKmQ8g7JSr= zems=J!+3YAxOb#|G zIrPC%;qvJ5XJ19YiZvCB3f39Lz*;mF^iLPvie9bRwTh(|UC-2y*Me#-7+26eYn2@% zsClF|+Cpvr^l4+!&~3vh>xW#|HVtQdg4S-IsX2jFG3PAbnzzk^j^hSKV7ZR3U{@2C z5l`z=XREHq=Ch7bA~{i=R#{k zCyIlN8#y!#*;qT^#wgs;Zb3V%bcFU>julKO=o@Ozj^Q~42UEVU(dP%fvOmrkS%aP$ za%`1YiFFDp|I@O}(ldRx<`qp}pRDOLdjN+N2MpdMy zil|x8HTIe?) z3gR7@n=8f{ zvmt{Nc!^Tf4o9{r2QX0|+kq(9STYxknjO^hSiu{Yf<>xl|0A=GvPotC{My5r$iuZ} zlI+HI-b!pBHjs8z{JD18slJkF#g;DNF-$j*ww2thD13K``*>@U#u#@#3i2|b$j7)A z`T9z(pQLk21?k3UOZzORWS-T{#@lvZlN}8^aJhw-oG=`oK2%u8Xx z0?VWT<){SCQBzO-q=GGErfFl8dyAohiVqYVO7TXbYQ^MMB3BQvM5|NmOhH38881!U z7wxCBVtQq|(mzWCw%t0paQqitIWJo5F`cN252=-ud>>n#Np^KBPN5%bYf+~v)K5P@ zfo^2DT9Leh-ZHonSJBu91y`d3gFa2}EaDpMdRRTXuOj#ZT+hDeW! zUZkCG1RiGXp%q{%jge{-@JJ&t)zC=033xC8OqDiLZQ5LcRin*OJ&shHP)8G}RJB{H zjwMv7wnwT>JJVS;c3BTOa|f;`{Ts;Ld+1G}u`7Qb$}%$FiV*A}xlVi^#EtZKL0(-I zL{A0DHG+KH667}8&OVHj){sQ}v=D%JzV z^<r_mtxKpM7&vk^)lmF1P{Js86YIosonp@9%0x`dbWQMyY;>7%)CjOl? z_Avj^?b$*)>95J|H-hxuP(32u6Or!0VNqrX3`a06+}I=NXK|EFghhh2@_Uz?ZaeE7eHxknwq^7#WAjhg@*Dbo!q%gO{Kzu4afXEs?iCLGp5A^SYv-{E zKT09pCb+PnZGtIvgcS7q$h{efAJ65!EXb{oIMxHZp`8&8Dak|)Z?%Hg8oyK zTca1SJth>^$ls-CbMHOG9Ec#hi))!C+?5eeVYFj+u~tmy{#Nelz#J{l-~n;NttZ$A b>2IfxQ+SFddTFYU(xpnd_a@#)HLLv#$rGls literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/EmailNotificationArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/EmailNotificationArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..37d7614586054b077f51dba19b322414c8a925a8 GIT binary patch literal 4948 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 N{u(4VP5WhB`VV+91GNAE literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/FrequentIssuesArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/FrequentIssuesArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..fc732f94d61e1a738d0c9ac6fcafd4f11ec60a37 GIT binary patch literal 1651 zcmb7EYflqF6g|@i-97|F1zJHts+96r5Fd#kT8Jb~DkeZkG=3Sj1FqT5)_oZHR~jWG zlK2DsQN}ylt+b_W@XO5I*>lf5_uSe2{paT|08jBG2@Q*CSyGFhLK@2ntfUafvRWP{ zu$rPb%j)%`1RgUaHht5o3Wp(6mQpxd7I$6YGQ?li>fQ;%T*a_!dfm7DnyFV$B=;O{ z2z}cTpL`*`vg`W7Ejh>T8bhioJYjgHdYuTyTN4f25&9e7tNR||l6&Sc5&4c_SnL5? zuYBa6xo&ZJtZ&-3CAeJMpxo@PFFms+4oufPv_wft+vA>TODdVa#KkXO>*ZSAc2xP8 zyqbiYURfjs)=y+@yUN47ccP)TMCj9mXl9j(VfAO%%1<8Vj!wKA>IMV>&ZXmcJbc)WhT}dLHB=dbqa$QNHog~ltkVMpwNl$w_ zXNZ04Xy6xv2mHXy=H(J;Q+NnGv$-{&s+#4biKJQUoLwngk{~ zEh@KkmqZ~LmWH{1*35+E(&x~qT=F|os+ZP^gH)qPXA#U}f%X`^jpG_csUXs*&+K2O CK2hcX literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/JiraNotification.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/JiraNotification.class new file mode 100644 index 0000000000000000000000000000000000000000..cde9668bbaa0e3aeb830e959b733e6526b76ad44 GIT binary patch literal 5827 zcmb_g{dXKy8Gi0&)7fmMO-b9(25cH2&}=rDHU-qC)TX5s+O)-{L~H$;>`sQDHa$nmuC^PuO5=lHAtkNCcKc6aV25<&X73t3A;aUM# zdHQvJs28yxjUqk`rwA9#B1Z644PF70g9x$8&rkDkgE2QXe2r&)UBfp7wwaZ{UbO`F zE>zrx(G2Th!!|0eXBij6pcw{p0t1V7%`t<}BiM8X?AXFJbJaBJrc*Ocx^CSvow?&Q zci*MZ3G9ZoWc&7V-I{kCH!uU+b$o&Q)^VBfXXEsZrt7i!ykj=Vaz41(q|2@pLjuL7 z=@BZhJmM{wP5ZKY-EsuV>r6zeQspiNp6%46+F^yf^;%%CYWWqIby;fB znx4C2*GW~8?ygyt;GA_+K=Z>!!}RE`FZAl9C-f~ZTEytV$qYrj&{J-exP}&N$GQ+U zmM!nHNj?)8UT`aBeaZA}er~P?E1XI3oZtnHZ>+`wM3E7ILWZ)Dn5 zy`cv0(Oxscz^)q?rDx2#%F^*E=fF%a8ksenDU_7QY{w3c3+y?#J|L4z0w+@5Z_W?% zUd^9lio8j80#jRO4pLiL>~8=DzJSq zFe}&3n@yQ38osIFTN<9x@NI#6k~{K=_QpwU&AX)EZy520G%keoI;S56^raqdP|Jt9 z<~TiVhf0gTE=x&vV9lvhdaad1nX{_`{XWkXIHJzpq(Om^}N>sD9#2zUp#!lPo<=q0LEFEIi;s@94b)`M0O3%u}As7Q6}7M1nYtU%zs z%||nlg`3PH)r-BHmCzsar_}8aHZMBWQ>v=i&_}le)A>^tQe2c3?~FV#_jChhxPcHT zsdO?G;~L}}?KJ1}mkQD0&U%j8PSv_$TW}1fy z9%gtjcsRtvVIF3A_zq6!IELdq%%e< ztnr+{y$U!>k-*Nlm5UB#fk|azwiP~HDS`?%%Sfj{jHiOzVU7q7C>WU$wnL4cW7Z9B zm}=bT6{3^Uq;6|AQF1binfifFkJF82Kn+{J6wul^8R~pCZDTjM-FJ1S5c+iIlpFZAS!2>vWReq)# z+<}(5p_2@qYD1|)XG6;gDAn<7=yU=~)jk_Kk$}>fkPV$lKGu%t$_PC~<2Lzn91qjI9s%gT7@wf0 zaf$gPy_@Wi%+eE+6o@3ZhQ4kdL*XeTc#hJ%a)(D1lkX;ZL?P)>c6Nx}_D4yBR|bdx;4A<5xXl43W>D;tu`rjiVH zll*c+l4E#;0?kP~PlY8%*MZX1d(dxV`|o5@a^i9|0^UIZzma4k5wMjnG=;joDWVbF z(zWQ$B2R>zzEfp!8#}t$ehUrnO11+LuESPnvC&+73Ma@G^Ul+iW&WDBQJ$`&rQxBe z@;@;^V&6f&JiUgUYq;Y!hS^ddV%=-lhd)S5rD$fy(rCxhXv-4u;v`Pd{6~r9A>=;9 z4&=9KIIZD~M*s5bi|$W*y{49+*ZW)P_^*>Ge`{_Ew`lt8h z%ju&3Om_bwML!t9JEDg=qKB{`>l2aTJT6E#4oUfWTqF}wjbT)YBt$jl390T5_F!9G zq_N2TcT3|lbY=ZxYuL4h-M6skeT)p>xrV*BuiCq0FXI>R^ZI`Q38t<( literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/JiraNotificationArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/JiraNotificationArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..e5ecbd9c893efe37c60655058fb9ef9846623a46 GIT binary patch literal 4519 zcmbW3OK=ob6o&sh37H3D2m^)yiV-32WIz;Em-L)w>!xwiS}qR@v>ewB-5wEW>gin+Xg+1;rNEYq zZpc}un3dLomMu^ul`(T#VNtVmes_b-_C>uc5FK^&LS9+|$tlB-)~SM4E=&61(E3sK zxgLZx)U*C>!wenE%O%Yz*p#tF%h~!>;yt~_BxhPOJ?GdZ#~$uozqYO*JQWMfv_ z0-Wf}XeE8YyetiYfprYVylv^ma%C*E_0(T)zcJ>$XC1@Vi*ivf>olp)XqHx#wzN(f zhG|z83C*b8mBOy2wR$i;>l6yS3h0wfs3Yj&Yz!u)44`WyusJWwIZH3`f~EPPm&=Y^ zpb16`)gV?{dL_$T(s_XI~3R89jfpn0S@+G}~^f7{Z)W5dBeSc7U zcPjW>4~4XLr;EQspuIb#{H?o#>}lHhTMh)abf>1j`9WoX|N9`TZPWs7jjeSq%LNK- zt%Mv~FQls>TGg$VyyEDVoHY$z%>rHOLasKWlfr98>mXt-(PkFdTESK31NAu?&|LAZ z?;E~!I7p{|H(f+1FE0*KJ4n;IqUQj;jiQMZ(AIYcqVFq2&fh`PDw;p1SOkOgY^4^! zH)zJU*n;mcL~qGzAEfapy|LdR*KeNMMJTqT?$>`8o9-cU2Q2}%-&6A+(2gG~w(Zrf zt}UZJM#yw4;k8S@G4KNY=LCtq+i31zMYQi0y){)(`A!A=j2M1V{1SD)1n&mqc9dFG zOW?>86gftb2!<<}j?2H27l?DB>X@`p6W~`RNxYsUPL?O=cfs2XfdxS) ze9*rU^zVwF3QcOCFoLJaLh$xT z6$e$2^i}XDRq&VMr&d6FExD-`jIF7FGlfCl=YbY2N)i=%%!Q_%JOsMc3oY6Z6I&HO z6`GC(5A?VPdOQ?*ix+ygl0=0bccJOf37IQxKIr`f-KF@c&~$=%peNQqd*;eSXa!rn z6&z49sufJQ70_WBGVCc|1;?m@VZ~3afKFad1(Rzk5Ogeu&6RCl=rJXU3O(sU)43i3 zz1;^rN6=>!KNXrT2_EPv5A;+h^!;Aw3rZ3dddh{SD@X`*yAL`~&{FYJq3J&3fu8n2 zPlrP9@IsqP5*2#dg{Iq52y}-JdWE2`D}E|8UA;WeGal%fQ0Sdr=$lFs6?(>nri)z& z^e!LtTLk^K;-^B>Eztv=@jz!np?70u{G-fFoZ`%LRmcj?sDxa17cN@{v z19$P@J?!C=vmQ;R9;!u?jc9ACvleY_L{q7UYtd9Ax;?eG7Tw;6wx=GcMcW(Ej?}(d zw4)K-mD*p6?&4^p>@LLVTze1g;(ZK=4=^e|#5wU14Dm5;icj#a_!PIqXO&^89_y>_ dY21W4DnEiVc&73{LiZuMI?$kWQS<a4& literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/JiraNotificationArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/JiraNotificationArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..80e1f45139c1158529d6771db170c5da7d4c658d GIT binary patch literal 2943 zcmb7G>sA|86y6g;CO3q(N=a*}*Z@gr8Qa==A*FI@l{N(h%3A6lhva|vShX%6z=v}A?MVW|Fo~ES`|LUA+uy#Pv-0;pfBZ#6Z_&dHjnI267P7QR zORO!kxWnQui}zW4z+#2PJr?(~bcSjwJ;>4!)mW^mw3fw5jgLQ6=_7^IMNb+HVJnnh zF->7F8M@;LN1?$x&6c~b&`hmvHMN#!culD__D$Wj^}5jRNn2mFT)89bx+^Vn!QOS| z6iVrJS3VL7jfKtXmMye3&uw`wFqsXx3mVS`>`D(!GK6l<&BL~^ z?wPJ^iY@8LZ9^=WrsW3y5pnStmwtGxtu$Mf&F+(?-h}70Exz=mEgA!;v4U^CB{!`v zgsITwV?^!P!$EDhwlsHxn9c{Wex)6H(^fsh&=DWp1N+p@()LhjOWJh8doLIi5d zwsxceEemZ=)ZP061y>!f+0<=l1DRo9Iz-In~_*-W~hOVmv3$rw&H+<{S81ikTGX=rOfUb+GQ%drR59s!5x4{FIB zo;^`S2PPP~sx+lLk8+jDTWlZp_#Xqy21*e%-|pUm8%N#uw=Z@s55oTJf4Mz*h#?p0 zhSJ2B{EtEoZr17{pcKxDNymhLfi;D&%Q`3M#GVX@fTN zROFpW7UL|YSWL4hu_&{suy~VhD0KD2k3u&AHoU1&`NW2K8l|%eO@s_=;RMM#+ImOh zX9p90d?0bDtex&PRH#%6Jt%A2eA(t==a{bIX*`1`Ax8xc09t~J1$i#e&(o_|M@XRy z*c*3nc<~c@4LYiMfOJ<`MWIg-RLJ3Y$07O{ z0fih+b*a$k-l*v=3X{+qRqCQJD!ozVE(){M8&zqehEcmQngQ-Iil^aA!8%xZM#|%$ znpYrG!RAGpg`RH%0OiKD8}0%^>mZqoB^iv8)cTT)$7Ym@$>`G%&+&|=VuMkm!R&=dj%PF-OOlR~?Dr)p#gb&A zBwzO>DaVpzqa@$-C8@-ce}dUd(Ba&E7em6vH#^2Y&>&!U9#NXAk2t7k@ z(>t9M_-*80`UMSr{G49mI^v%nWc%v=9-!atps&*aG@=Znk@Rr1?0<$TmZ7=erl%2H tx7?RH?s6|^1ny2frPG{e*yAbqxP`q0&C_kHNt_PRE6}omHiG;M{{jK99qRx9 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/Maintenance.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/Maintenance.class new file mode 100644 index 0000000000000000000000000000000000000000..61164e4d75c4015e7244fe925715f7edaa95eb26 GIT binary patch literal 5417 zcmb_gYg5!#7=E%W1lA}B0*czAQo#j`S}&EQTA*mPfK~)+y|iIBtdVT8CRv1D>|K9E zXFAhQ?Z>v$5vJ{Q`mHnlQMK<$vdPJkgycoMOqz2xytr@`mD+ELFg86|vE& zhsv@d>xz+=$4ygL6(e(j*6zDeG90a-&TF9p1}r6GG6jJEOc@Zk3F+l&mV7 zt_N&+TG0%LJY{6nOD;5-#*Az8xCAit>O{Rr0(R$BL$wtBx@8ts%h6OaVUCC4qES21 z%ax!m;|!0xsi7O!3uv~p57b;qr!Y+MKrcmb*2i*ro#Np(tlAo#^hkgGuwb1gqHy}jcSJGToBMX!0q~3 z$I^^^=GZ)oWmt9m*8(yz!du35%*xv?WKy9g0Y__FAt3+K+IS6?YMUi1tJ?BJ$#%@b z4S(!qk;hCl-IOA7L-i~buyfW?vP;uS(M@&{h6qzcQN$z4_-K8;UM{1NLcQO0^NJjn zXL+Wi>umo}l%8$j0e)Zd#KR2J3_55cWtJE_YNS}z;-Q2_2U(-d)(SXYpDqDi(ZWEd zjb9uh?&hrFx3-^sENj23-5;?C_3`GVYw=M>L0M8O(o29fP!A3-%lRV{DaTup5wI(# zE-EG6@snJ@)9qjp>(e@!HRM%Cz)!UYGLov>oY=g#L+I$4^k?lUO@??@qj?Ba5!P*%Ufxik#Z z9DTuP-X}wfYSuh`|In>dz#dYw!7$3VWluoFw*tmvyiui2mW}rV%+YFeEu+)6F1yH{ z#)4|)X}5nL3G5dBsLSyiYKH$oTgArM0AxfwrTZ4=`;cK3r$l#DRdF1mkMK_V&`%=4 z3K6w?X_UY|^ibak0sGN_12#<_%;FWiddHonG8Kp(az*!sqP3p8X%ZeJMyF^bP~V*X4Z=DSKf5f4sBLoJAHgs^ zOP&mlL#B~u=m~n)8;jErgLASf&Pl@Q3vgr_F+PpNCs|46A_vkKA;Zk*j|FM01evZ1 z@;ZT>#u;jvXT~Ue3F=$YgTJC_4dO2}NPxK}PrAKjaOfYj z5ZND*92#CnY8^Y)ATdo19PdTS(Y&iE?X3(n^#q!Fd`*Ol3`S}Fn}l)(i5J*~WRr*s zA})&be^i6_eBlL6^Y8s<5*x!f&Fx^egP2cHn_y=iVKV-YiGL&Yt&IQhzT{9m>4&6u z$t8W-6AwtY2Bcdt>23l7!zEmH-Pr2VPvRX?;bk$CxxZQQAK_ip273ojAM_fp|T`o*fx672y za|-%2xi`V_V{=!?Q69e;m)}knbLKg(ZNW8MCnd~(i+=p2KhSZTa%*@EdqP6qCVs+2 zTXNmSNJu^j_Qc%9l3ntn9lDE2g>>Gl=B@_Zpydh7x}|3a5xq&jgEr>yfF{~$s*Tbm NPr3I5-yolq{s)#o^MC*V literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/MaintenanceArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/MaintenanceArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..4d2977e0ce4feac976428082c141cb3bd7790777 GIT binary patch literal 4166 zcmb_fTXz#x7~Ll=qzSQEM~W02j83f@X?HFUxiJ6F8pT7hpBbnc>MyMcBsx1dk^rSgQr=1JSN zgS;wI-F`ovg;Z#AyRvadf5t{Km;%)swyf>HvkkoU+3n+U^NUT zM%IOFXxVKJFp(5?Hkxr~bJDJl(`Fu$|nDT@EJAe)TnOyPWQ_xzx`^$kBq&N49_cFIN9& zijF-wRdu$;-1&O#tJqpcP&gY4ZOk!+Fs^Q6KpneM%wF5T9Cu7}Y$GfR+e(^;o#o8? z-m3NkTTZ+yre5RFShr#4?Yv+8t zEXswOx){n$HfLgOWQrE5P_>!4+hE840NJrWx;$J3z}y)=WIvp;c`T-Q_kwFE(g{S?Sxe;PxGuVwiNqn4vg(Vrd zKZ64p&Y*yz)P^z`ljazPlF$-fmd2|Yj7xZ2I^?C6$B@EteS1|G0$m(fUAs^RhMNwC z;eo&#SkeQo=N@)>p9*)0?+8P$v1}9$wL)E6!f`NmH*o5+63ct-X`|3re~ip6-J*J) zWl<=)J1QZbWxc-sG_-v^>$&m<;G@#K{wv*hO~t`DcL{HqqFVMglo}axOmAI*TkPVB1NufELXG}{ z#MOuBx{vN38B5>=mc8r&Xmn#4TT#M`YzYR(;3e$iSMc^%@fO%G!Pu@E-oZ!M^aP2A z*xUlvX7^i^_(=r2vof>_OAriFGGF_$WGO=gUuGX6NRQq__rd!}j{d+_S0q*b&j14S zAT;pOHN3QJ0-|NvtCE65Mi?1oB!PoC#BWjv53?e)M_3B&8&%rWDD&xgfRwOS4BE^t zz+HneRbxyMBFEpAY_&ESq?IwO^do`{$xSvHC0+-{AF{>dOQof+q{5Yap(+lcOK68$ShKQ{18 z(L8dAW{S?^O-3rBPen|pS+)|rEiU>ugTxe_=bjhQQ+TTiRp7#uC45x2l>FU8Z-4(I zY=43s_t9IA_Vquz7VVR0ow9OB{K1|4Cs*KK5p`vU9j)$#E}V^a%sHHoz6rd{Z<@ri I>j$vsA91%%vH$=8 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/MaintenanceArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/MaintenanceArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..0eee09371af878be202b1da75d4f6b97ce28aa9c GIT binary patch literal 2509 zcmbtWYi|=r6g}fdY;Q~hI;vzpSpZz(5`j^#Avnz!$-l8LKbTebwwCQX{IC(U{obi#n3!j9S} zMd(R^Yhz%Q+Dq$4%d{|@NW(6)8>I*~nP2htuaPO zChaGsx)U)+f>ooOruHR8x9kU=+mT+NwDM1qYzg^}?B(t-XY5cQ@5vuR<;hl>r6aiZ zn=fQ5w5dt`xL$W+s-Cmi@>2IEBc19UeN~pNZ(+l2(c{UQa^zOn-j&`%Exo{W&23tC z!}63~$D5hpg`z5(BiRNt8PIA}4e2WS>0Nk^ebd@=iJlX^l!%sx&&D1Or1)ROHU8Sa zJ3jfL+nuN=M+H@Zba|;EuvAXw)(>;|ozPgZ$R^u;`|eyH3~sFHV*FB3tj1BD9Vw;+ zalR$@tk4cvZ~02ojx#iN+|X-EHZN;*W+V#ae=stbbpg8!Eb)~ zcZffb`Xvf!k>f`FLp7w9Oc!`=VR`bM)IUb@Z1>7Qzp+mmg0C!u5>(E#*-Ni z=5~T4I}pq=jTT0dWQR%WV@a+s29_qNv@-ojUSr}{ZlutcWqSmPHeQL1+eD{mb7`5z z%U7uF0fhdh50KX1%mFg`n>|3bPhO(xz(Zv4h?+N8IghE$6FPnxIh^g1#;KE@QBKii z0oPf7-MAMb3~%%ea!+3)uk&Z;aO~db_Yqp(yUy|xq&Wi$8qHt}!*V@OWLh9x7j_<> u_GG#kyPJFigYG7OLs93G^f*HwpK&jR&-rH!%#M#AI|1w%Ju~ng=Kcl$;9y<= literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/OpsGenieNotification.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/OpsGenieNotification.class new file mode 100644 index 0000000000000000000000000000000000000000..3f692976314bdd4b5c2455cbeb389792df1a9f98 GIT binary patch literal 5354 zcmb_g+jG=p6#r$rZQ5;UVS&;Xv=k_`+m==2UZ~P?5hw*)s3P9d-E;};CTo%{tv65s z0R??`#u;av@l_p%c5ue=%^4s3lf-k9-OZP6w%aNX{gN*^=XZYR@|~RRU;jM$9l!y6 z-Gp{r4-r(gjFK_a4r3u4$D@J#3^YTt3CRy}d-nC)5~T#&irRq+^If zlQGkXo@VH{#{28MWLYLB!(c5_MqWaLnsW46O+x!v%FHG6g=`_GCsU@SCC?X}e8Cx# z&@`!M4Am)EBsN$@?8w+PbyiJgRU?xeG0m)|8biaR+c8lv96hH^>9#(d)s7j4>8Orw z8n%QTOR!Y`b@Ieq-n7_!)KGI|IqJ;k>9Rh=kc3!XwMfd*EW&M2^ZHqBUc$f<1D;PJ z*-6LJjf~4RENGOc5}p^X=E z)0%Zrr4UGnkC`boJEdAW?~4zk&Q+bb_ltPxc?!FwrYIMA`;=zr+PLZHGkVI6Ael&3 zwJ*9T=HqxRje?_R$sDIh&59`HKyg}k*Me~ip{zn-Jfa)AGb~|a@6ssuO-VQ&@_gm7 zIA&$+A%=;nbVq?%rK*Jd|FvQULt)i49SiP&k5oN_p20B?SG7?(S+KgJrI>myPaQ9iT2o3Hknbl=9ItNcy zp3y)xuA-jANY)Bizz5$(mA?M>%E^aDOl0O8d$y-C+(s3LVv}w+Jn4QlJHmu^^ZXzo zA;P-l>Gvo*St|XDbaJUt9V+{FSU1wzT+$5rOdbxireHI+DCof!83hHixS^nzpY-w4 z%}aupIUH257yEfRq+lNX3Qpq;Z$D7*AwH7vv4T%GS5*7+XaPctR$@U zCphoJP1ByBxV$C)08{n^`D%vB4Wm0$xRhcKaH}BWR)cQPj7O76l838|Msr!C_Z3yM z6#YO8s@mMd7xYy*k;^+YEY@q@bvEqmRfZN8Z83(3I1+hOkUHSN-%B4c0 z1M$2NEXhyD+Y@L&ggYv&&(SV|=g~#ijgYVvb?CO~<+c>IW5*TuHTB)H=*~*f9v0nI z5~Z$OU9>kKO1-&-Hd(`9v~-^w3FyspZFEhPp;R4 zv^Ka8yRn<@S%Cyd^aZ+lfqRjj^^`&O(2ivq2_&+Jx=Ng+fYTVjVa?t$jz}h2335~b z36gn9*K>MKFcE(_8f3er#sa(P*hL@0<{36fbBWH0uSQ=FhP%NBHS5736N9OKOik2R*7~4GEEblc0Lg# zS4L|rqVcl>I7qe__Yhr~=J!-GQMz^};?4a7f1-)V{)p(n;3AYotXV({TdEUy-$DmI zbuA@4&9bG=vZcC^Ek$Mjw^D!Nmu6IwTRY5tbL4ie;^)TzlaTw zvGFn5&J85`7qN*e%?os!%kduV?i23^*no%B2pt* zJ1J-$*D;st8qPmQ(Oa8v4&!8qV>wf-1?4xiU#2=6TtJ6U%4;p(3Yq6gb{BJ?&~WIu zl_+lLxbT%?=KavIluze;wb0e!0;xyvn%lXX33h`1w%M4(ReBMpS8*zxj9Z6aArn>p E1sHdV5&!@I literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/OpsGenieNotificationArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/OpsGenieNotificationArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..2f1263f4f8510b4bd323aeefb1a8613c1f8dfc97 GIT binary patch literal 3407 zcmbVOOK=-S5Pc(m^oe3S3Md~F5W&QbY)8Zp99v4j4&+0G^RY1rU|=n;&8DPXvD!_= zSD=6^T)1$CE2&CIicnNe95}(5Gn_d?6~$|5Ess}H5&NLsp5B?)@AdTb=$C(g_zA!y zN(l^NHi|O|L@*o2LA;W{t2iseb8$Y-??M_E68!L*3@?gR6zg@d=ES-r)@8A-h;>!0 zd9fB^ctg+@qj)ohYcX7p;jJj%j^Z5!HKdR$mYhni>X-eBm0MZ24bL@7X6{n8cFwdd zbI$RsRjXupmSfMjYqh*WZ^5!H@3cbK$k9cG?laDcsnB1vY;(@9ESv6vv0SDnRdh;5 zdC_n!83)d8?*pr*5S{g{@`~vyBrn*u>7FSYwVKHfliQ;+6yT87#K`uR=7oH0#auP~ zvd751M#-~olJ}J@KqbdzHhiz@d-M@p)^F+vmH~u-ZvO`^7sKRvc-=X6JBw+n~wTRIQ8Vy298aq-5T6 zEqkq=5%W>9(44<>)`ze9wr5q$MXP49)Gr&ZQ87K!ow04ls~;WK*I-@Rt(?(x=H~oz zS=PQp|8MRa4NGBQv&CFm zzQL?0?5Vqa&no8{F4lCPYkufkE^i52YFXikUdD}S?3!UP7E8og<#BF1TcfNcm1|D6 znXX|sPfbfW9Oq3q$jg>-rE+NX(`MoEnc-*_U9^CK>^-RL14ORhL)Tq&-=;5ur}^yT z4B#Vl<72M<1cy0FHrC)79N|dth6B8L&Wq5uuZcH$A3YBdxrg31u%B}JXT0M-ufwJr zO9NPfV1$%;TT5Z{TZX_3d`o~t_71v7?;@K0j-#$RRr%ile1RCg)bJ8byo4MTqK$D@ zLxOn5={ZJE1i5;o=lINUd@6_(&r(9{d&DJBBPYF_0(`9ni8q7933;5~c`uW6S6kAF z7Si94^tT$GPMQarXgcW$JWo%9^b0saE>Q{iA`J;U$!CUkSi!Eag4-D9kb=S%1&Vi8r&`$?BCUF~AUf$nK>8F; zGnf?kS4_X+drA6={O%x{dh9+Pe~7ennWi_H+PC3NZhHGt`!~FOo8DCFz=k&^-c5RG x^zf|4kyZ(esa=>=NnBIA>vS8fX({L^U3iJKB6t}y^>+l%@|_^rgY*vJz<-Rn)aw8M literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/OpsGenieNotificationArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/OpsGenieNotificationArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..8f01c1783710ee3976d8060ffd28991a5193c934 GIT binary patch literal 2410 zcmb7GTW=dh6h7nFUfWp+y@kdlGzkHmwDm$EK#7~?(hCtLl^PTYc$(M~ccQ(xdx?m| zEB^-sRuPr>0sJV$ch+_?+1Swd;mqvJIp6utZREfI`SUL#`kc1QWYZTc?p5eZTIF4X z#eEiQEFM&7iq!xWd z2w|1P-6V!ic~^G;m4r~cGe)h^Jd{V$ai!mJHiN)b(qCPJ?aZ^pkF}@vbfouPwc-0g zocagr#dBEl^xE0>xSLpm_Bop(rz4Tzmqb$ zkuv?!IrZi2B(5vLj`PtDJgI%;+EY;^J8*1u!{9)>*i~ywV|+2qt)LB^siyYTPU7vW z@LR?dbh#O{q`N0W&EJE=eEeJ^1k8{b6(8J4@mJF%}1N0s7A`?EYeO z4OgYMI*^GQql~3S%N=B)vKu5}OFd2-W_H}<)wzU%CU;a6f1|irBAc$#HJfJXnnjOo zdO}~>G{-0NEUGLPSlp&Nf>tgx=R?wLT*nMw$k?XKbVbm-VHBz;4Ki|`4R-vRpwrJc zrl3l2Fq|(zwVLrxJl#K3t$1~0Khwu}^`~fqS$mw+dHeJX17U7A(SvA7t zjqm9l?2*9}t#?zcDSXdB6I!!$Gc`wMGfD>3+z<+>AFnk()Ix1CT86{wz#(dvQ8FAZ z^r0rf@hZIsy+x38@FlPomVYPlOUn9v$YOeUlRm)S?kmuTX@dHRso`vvmIfeq@x>q| zfaLz5i7Zatz$u-$bAE(a0cWSK;}n+6tW=A{{*RyjHoywq8|*L^ARnK zBx7aC92y|mh;lrFi0f>PUQ+4TOpUw|AZ%P882^kKLy9Z}cX|WqP~>A1gS^(P#K4MTn9aU&5}E?rgjPGyeis^XyCj literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/PagerDutyNotification.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/PagerDutyNotification.class new file mode 100644 index 0000000000000000000000000000000000000000..2c6dd42b9c804041e0e68a67a6561b442c4dec0c GIT binary patch literal 5371 zcmb_gU31iA6n?VZHrs8WP@uF0TS`IOZA%dOl0uc1qCjb}g(~7#x|=S6-DJsTOY0Y? zfPjMIwKL9m;drZ#Lp$m?-Z|ryzeqeM$?m?{X4%%^qHpph=RD^*AMeT8{{8Q-e*idy zuNu*Y^SoT(WhRc-@dn>r7qVVb4h<;{C>bU=&aCCtW=L@JIJ z=rZPF=xu_5E4;tTONM2#GECO8WaK2sS~6)BOh-c7c+$$Mxk9FpHPobK>*{2|$rYR- z360Z6+SHtatxFiFB6f8AiZ-vQ8O=7ij#ZJ#1=BdgCCd1E%CA2&_Q(Hz4v z^AdKgfYQpZ)v<+~WwZ6Dsb$G<)LG2YrDdfZ3Gtj}laQm^1lyn`9b=wE2Up;G9*I;( zEGwgHrptAc09|~}a5>|QzDS|U+18wqAz(SL+w(?}?mBw=su*G7qgIM!n#T=OpD1K! zb^E+VF<>98q?Vb{Y=igy!>DuFAohXyrWPsewwBb@b6Q%rPZXTR3Cl6&jHDYwvazQs z0ntk#A?m6Witcj?Pt?*VI7UXD%yCw=OsH9gX*g<_hBGW-ORo@TpIP6Ggt3t4VsL8& z3+uqdN(E*QzVw+EZX4TDA4ORj`wKUL7su9V=2^Q zU~d&);M+(>HJc|8Y;PW#4uC(f|?8aWF85%r(helE7;9TFSg4lD454}1>O9l zkCy~53plJ`KMwNpqJl;AD>#MIynSE62l!CNM+!d14Fxyxsf2yPNL8aSc8wH_OiH(D zx+vW#r%Y3~M>ASJuTx|HOu;SOR&WQOE4Yh$3hv_zijrWY6oc@#%S1;d^avW&Xi3;m zIndFxAt=@`#h>FKw`!J3ougYoFAGokA59N%halrtgkjRuM{|eD!&X{1CB(chs+OVn z2YOM}E+@XA56oCL=g_=YuY1?|up?L*n?UafCtpS638TSmu_O)#N3b$}sB*EC=umVD z;VLKW0u5}2W9XEiI5o)`8k=c$ldzf0tZ@^tqxa z_2-i43e?^JDs}JbqTK;e>haY@`vRi$C8#c%5JVO7b{qOhcz~Q#X(!ROKJg2rA6>5p zX>D*Hc4H6SvjPc_=w7;dfqR~w?G6QrRD!5gLG}?yZwZ8VY$!%d>Xs3$#5pG5!~$eq zAieGqj_6T+CCC{8WTi)ap&$*FAQztqk_ZKnD?!pv1lf-R{Q=Q|!DT4RShs}rY^hG*eG~2Y z#I=<0G)tB`N|ri&ON5If7$W_ngmM6p$5@YOgN$P`hGqKqQJr^x>@mF-pZoVD_A*5h zXkwp0%tvUA@Z3R|%>O#^ucvD>^B-)F4uq4wMRsqyr1yK`CDP3$(#<&Go<#z~7*4uj zY##7g7O>ME>fKhE}^|l%4;p(2$|=Bwud=TXgGA- z1r#@QT=d(rz7oiF8!? E4@#1e_5c6? literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/PagerDutyNotificationArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/PagerDutyNotificationArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..32dd7835aa337245998c903882cf158c6519bf9a GIT binary patch literal 3421 zcmbtWPf#0W6#so8kYq`LrkegiYphrx{7Fl-AW2a|t*uQ10%EJ8Zk8o(C+x<}E>o`R zs8@UO;#seDrj?F$oSr;*(z9nhd)67p_cj~&*dz`N2R6U&?fZW3_ujtmef;w84?h8z zgr=Y$`3U9|gpiNn6fP@x6<2uqT8ti7yOG2-gcB;9NnoHZoPW;%*q3wJlS1Y*o`U3u;-nFT2iG z(Q=G+LsK2YGH2~_Ei2HKGfcyo5$G5iUJ(e-S!=pLZ^1D2qPtPj?Pax8AxolQX=-If zwGCeT#<26DQ4@&dU8Az5+XC@xrm5R=6}48=>BZCm^$hq#r0c@a0rzHEesoP=SKW%k zqEt<@T+8ha%j2t5P21bn#CM~F44?JJ*R4pu}N8t?V})h%c|(A z=~bk>pDOHbIE3ySav2(ohu}LV)uBPhg{T_W^(}!ji`1#chQ4Cd3_4y5s;zG5j&9GI zrsa6Yl{&iLJ%qP-ltHr@+L}K{Fs; zWyx}FO~2xCo^Crz#<_**02cL{bJeOjah%380^XP@5wH*EI4C@I{>q;E_vfxg{YGhez*brCq~ znOw)HWa=hrwjNvm$Te)eXqnt(0%zqDQFo*H86=~I30dm`qb>NV*i7vO6tNNguaj4033dzvS0MJr9Bzai1z zN_?_tI?}`@i=My*veZSt;6-|oo~=Z82SwkLg2Zxa28ME@x9 z$)aic5SuJ|a!;kFC_;n-zC?h-wk!LQU~m))!58NgL6LCeeSB=zkQ9soyiBq}cm=cGZwSxRuR>x^k#ztk{{ykK+f@Jn literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/PagerDutyNotificationArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/PagerDutyNotificationArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..97153656ab4203930aae243617a0dc57658b89c0 GIT binary patch literal 2419 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 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/ServiceNowNotificationArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/ServiceNowNotificationArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..57e1f8b0c9c61e922f72f9a423c07bbcd64f3c8e GIT binary patch literal 3062 zcmbVO>sA|86y6g;?g(uap|v0qA*3y1TND+Fa;u^tD737l{u(9+9M)te&V|Yw_y)d# zYq`9&wy|nmK7bG9^4pUMoJ=MzC_nZ&bI#u1{`T#VfByaRZz7tf-7F2!GK-ZQt+(T@d1kuS!}TQh{eY&Dml7Dn`x@%Xn;0ZY^CXw9BwxG`qMORE0kXG4YMX3g$f&% zC7e}Lb6w#o)W2SDc*hFetmt-KZTO~NH`Lm(rFo8~3w1|0M}{t{_JgYJ8T*E=d4_E* zI|uH9LMcu6j3c4Yh-|Fej!?IJui<;p$?g~j0P`KF-RPmVSUJ>=G}Y9s19io=O`%x} zORyc?_ASq-i(SJt_Dr#CS+*DW2k&ARmUeorZqysL!|s!oR)^<|BfjztN7VX|X$8#1 zk+3|#TnSu%t)3dIRo^rC`iMx_YD(=eZFJj%6Em+B739D~2Z!=(46fhg6Uh%#k4^~10TisE~Qsctp6>Y54v>#-M$JqX9cb8Xk28|Ngm z3^RMC$WBa9`9;Gryd|W)G_$MFTuEkrroLx0rHBgdwMS~9lf+q2is3vW1oJs4oR_rZ zE>jcxns0LRXBKrc%tmg<_8nc^4LWkX_tejFQz(?L3fJ2d+MrgD^6EvEpodVsX z`vschlOl^L7Go@?S(I4Juqd;5lipHj{+usQI~X>fM{}Rkygm+<=JX_N_Im*B)fUJmwG=oPF( zq|jBIjk&lS|D0aM9+{134dVMMG@&&?uLb7FctlBpnruU%Bqv(02M#5uVhDwjMU*6{ zsWud98qt!V#zH96ytmSHsDz$~C`tZGZGUK*h?eAUCWJy$MU*6{atmq@i5sD7(7TSz zsrXW`_LrZK@-Rr{4aih*I8L+J7g`EX<*K!+^#;x+P}3I3EqpOZ1|W&wsV|B%E8%21 zaM*G(mP|4Vaz_H`?*L&k#aJ@^F=Q$dPA8e$z?q6AlZul0LIUX|GY62dSTgAtGKUgQ zH<{^JoJ^aCa7N9=y07wKm_KEI%8A0mcFG)KSEB0Z)x zdO{Uy;(y3*0rBA$xv<$mlitP*;&&OnL+^$m@C(U*nP)Wc*;9If^N63CkgXa1BhX$5 zwQo}&c0^g$M$m)NwErb#EDKUR@)^2wlJ3dSUH%yj!QF+&bdlqfJzjv1C7dPbJ$fH& R61M~N5_Y*@H-z{{{{y6vNqztT literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/SlackNotification.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/SlackNotification.class new file mode 100644 index 0000000000000000000000000000000000000000..e242328ac708f766755e3cc1368a594007eecd0d GIT binary patch literal 5156 zcmb_gTUXRp6#mXI5Evo|Dhjp&iU`9ct)jLcAq3n&dg+((fYtiPR`!n{`TeUbB2HZ{p}9`NAX<) zc4C$fb9}hKhl_le=fisq7{jFmy*VJWIF;sI&nXoKFQ_a!iq}x85GhIES&FhZ7U})o}X}PMaTc*R% zQ-Y<2%gV`>tYvfaaZ}BZ<+!_=rN_1iLkx+mYLk?!*@P>lt`d-DFbtMh@SPIb&bhX3 zE_q~I1?=E6p=C73QJ2WHl(nrz-JrLcoK5H*ef?$dIqOL)O_I%1x~Wa)G7Fl0L8SmN zv`$$m)tFapozH`hardfD%=<*V^eP42R#TcXXQ-*`)0V3*>M1XHgs+q}E;=WsVz?>| zAslsMx~aRz8FuuQ2Bv?WVLak{l^%@SOU@|Ah^zEgl&MWT_w*Pt|I@O_($*X+XQwnr znanw^m6;9ZGg+@rJ(iN?Pl||EQf1gO=Th#@s#!155=;q}gsg;58TJoLB@l+D zw6>_`3^%A_hPy9<}y64KAi=1SZyVVVXPFb0tZ3^QH}TS>S;&DN~9H9 zdV$+8+CY>mi8-(Fo$}7Kwi1b9exx%bML@3}!(QYl8?}Cc_9-=_LwT2u>1JA6QJmtl z>sW~$86DUyqlXU%_|V0NK0fsG!Nw682Qk8jqY@k$E|N0d#yk8=PR25BNLZ1viqB+x zjxQMw3YVD*x$l|C=|)3q+>$*1Z5U{4yV<7keAuVmcBEg4_q8yUB8N5;3f%g`$r z$-7e@!Y?{Ynn`_M^F^1Vc1W>b1zS4Wco~sRPU(e>R30h3>xB4`${Qs> z^}9!KGYs}cS2uK5*C@aV>Rt16&7>1TBHlK2tBiKO-s3>0inDo`Lt6_r-{8q$(qwrw&wbmU~=YE01!%- zVOA+@wO-^Iitd=9YmorNtu~|C{BHf@bDvF>Y?O4b;CIclcseTK0bTus+6b+dNg8FR z8gX>fPqB9T0a%9^Z-X?xM6(!P#vXd^07EBg(B;r#cM5y4?~1of%`z{#zgV<~i}r4a zQcEo_dZ0j*8gF^gt^!eN&*eq?3Ph=imly39L}l`}14$AdASV@?F?!Y}AA|kuc|AyD zo%gW|L-fuSNC3kmj398Y(6^pQkXSLua9NO73FJT|NKG-w*rp&|ks$G6kTaWt^hJWy z7K2>c6r?{Aq^=lbaZ`|kI7E@**%_y*jM1|pIq)l_HPrt?lNfl065fJ|dRQJLpIkj$~_MVDK+A5ZRv)9~@do<2vLuY~hw_1l~7kJKpjvC4J4jrH;I%j=&P(;x)WZ z`o{?6Fk(;9gm|3Yh2qCYm^ zT}+W79?Qj`7UbWt^D@=h&>D7yr2M|}gOGWC5$z>C9vU7x=DqRI@xqsb%!i@lQX!qQ pHFo`sdc zam*(1Vg?D!rqPR+GB}TyWjUATV}3t+@JfasUX|s7NUw=h6zPIU7e#tqq)Q?#inJus z8!0Rc+M7vSPT@)lZ>8{d3hyNGZW8Y)s6K_^g|fF^*a)3)-7c)$bj`pw%T{60G0Pto zy}(|z%VuDE?zF#F8CU3-uw6TtQfM0(TvlkG^;Rr}t_9n*is5?6@|Vn#Lrr$UE1S-; z>D#i7lxr&g?0Gjsy_ z>@drLeVvSp+fd4$Zxt?t!A2O25AFh9qjf~zrsFB}Y|qZkje3Sowb(PUaLv4K797)E zE6jMFW0~&w6hluh+G{+r&}RVURsl5MyvL~K2bxgXBi5lNP%Mw~Rg-1m#A;K^pdQd- z;M?w6H5sLyBw*8ikDTZ9_#?1ALS?n^BP2$@ZdEGg8qc%cHP`t%aVc~Id)->LD>hr{ zqUlo|SpKx@dO@`{S;f6os2c?)E>aeXq2oyJu}YE~zPD;iTegKh^SZAj4XAK>U^mPO zlv(sbzigeaVjXKbBTh@9vcrm2C7AOnfq}=6Q^@ap${2VAk0$ZHfe&EH_5lNV3>zq+ zEYgsH5m}CiG%C`lNMj<6i8LY7gh-PjO=5`tts5IwIj~l88}$U{`fIJs>?s_qs=~l_3N;mLuhX|a3T@vidal%*!b!bFYG$0FaWIxs!dqpNH?`LIYRTuG z(I(~^_GU*mxWgIVh{t*9(yvq)r7p^>PCg&!Y6fkTfbRTVsQi5-uG~f29kkz~E`bw# zcG3d)8149kdq2e!Tp6`J=tDnOf;SN1Ez&MQ-Qi8Vp?lc(0ExTkXaf5g%|GW||3wwH zr?xeMB?tydnOC+n0KW<0CBDT$CVw04LwAtOf5%l@m8$%I0KP;DUuk%mO}vb>6wyx6 zsuqH1PE%8$CV{7_p3d+oo+cwt={!S7eUG#_s^z4ECcxL4lk}#OG$GIOyOLg|eKXRT z2GZY<^tT$GPMVERG@bMa&QVh%{dCpSGki89y+2O+mgYn!J;MKGLYiZx1!<#!^nH^4 zQNz?7!B`XlCwGgqcQ-`v2P61X!_y<+H4uwnVp{}?cSI}F z2jisw(wyj|CnD0kWLl8UHjw_Cr2o-1-*0tSR+HCe% zU7Ho{7U^T?U@4{1qcRv)`!S;oTvi9*s?KU4MvY=LUfS>i2`4bk!7c9uPV$|hO)upq Gar8fXq1$Ev literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/SlackNotificationArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/SlackNotificationArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..ff860fabba8477a0027bbbe1c9c011264a5569e7 GIT binary patch literal 2382 zcmb7GYi}Dx6uo0RUfWp+eTBv)qzM5WxAj7yk`AHa`7oV&J@&Bkt1f0&t_IrrRiA2ag5|NZ?B5q(D6Wish=9=_n=OCDA$ z)T9TzTI1oX3eC{EK^qk+(>f2E25nVvvd+g34SFQV*o?K)QGp!f{N0P^pO&DJ#Arfs^%aLB!+Vp)#NpE!xwsTKnFVe2s*P(7ZYQyvV zDDe-;%jdY{>9Mu#_WXd|7d+|0b16{IVjZYX9tjo5g#8q7T2X5G)Tb19Y@s&+%)hOgSla z)Panh2&F4EZD$yHWzUZTTRl!%r8@SaHMj(Vrgu~reXF=TLX)o2HIwFfSm2>b*9>}W z(%1BjNsGL*#KUd6Bk1nM@AOD6TQ&sMFK%hlWx670F=Y{`Fo`X+o(xy~Y@n&nx0IlY ze=xc|f@-zYgRt8^RCcsFwiD@NylpeM(gw}30IYJH8jQ2a`fa+7`7Od*g1u^p!y7-) zJ6I!kC#ZL`sQD2J$(@W^7@?5;3~C17bMOj}Rl1o-K~*xKl&r-O70NalwKPCYgZL`F z2i!84Eqn>gQ}sVd{FbB># za(wkbb+$mysq}lMK<*e4Hf{`!e??kyu(?-+Rct4gvm@dC{K4@a)yzyJUM literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/TrrelloNotification.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/TrrelloNotification.class new file mode 100644 index 0000000000000000000000000000000000000000..77f367ab07c5527369b213bb02ec8139bdc56f28 GIT binary patch literal 5695 zcmb_g`*YM(6#lZ^HtjZ0C{SntEd`<7ZW}}%LIG_HC{P~KQbByByJ-nzlQqeff^SrO z3x5GKjx+L`uW@Kc97TU|#&O2~NIWOm?%r&ZK9nDNZXVzL&Ueo__vCK>{O6}%0PMl7 z2DIWln-|zzNa01i#8)q~d46ZJU9GcWRuk-~ahO5qSL zr(hzVLJKSzHjfTJc4c@BEXtUaP^V=*V^Wu}ZYXQ#)k4uM<_$G#JGy$R=oN}ypM-{C zW5UwBqC>Er7})-yOWLHSnwmAC4%oJ-YgXSun%jD&Xn96nA2nQK%+&iW%l0(Suq{`@ zmN{Hn<+XZvs$e_pK51!r@|^Up7HC)%;YdQNpgDx{bccACYlVVoWPLZs^{Wyxa~uV0 z6Gabuj$uvsnwtd|rN?c8qI2?TCF@w zAIk;D9yd(Vz1-1V+nm&ML#0d& zvzj@oIR@XC9wxnu1}#4=^5w2l<{T}nt0Ru1o2Grz_KfjTaL9ui>s}0wn9<%v%@D$Q zXrT#3&oI?fe&{q)bXz9jN~+s$ScZ2{!kW&x`RN*!Fc|TC(V^&fCfq(|NosT@p?7IB zCD{MlyXcXNrRZdJR~;<6o}E8ax(}ihD3xtLWF$6J-wREZux!}VvX@V21;1`&T#+#) z0Anrh!xWqYGDhBp{6K*0@sBw>ee8e5=1whR;vGp9Rr+9+Qs zM=eWt22IU%byva1_(Z{{_)J2lz*`PORHtQS&q~-V;Nx^iSW!9r1>bD?CJ7Vgb;Ms@ zN}vFb^HXjYn1&m)1hDE1COEXnIQ%&&ctv>jGY9@s{)PQ1JoA`phD2MX} zkB*nMdN58#?Y-*Agc?R=rK0#4$UG;3vDpgP9X@MS_#-FJRu1inM}%-y(shT0Ja)ldlBg!>jV0MbBwb~a9dyS^>Pbn> z43gD6`vso*keDZFUb@U9uBf(}A;Vn&$Tt%Pu4yU^$X?G6rM}%JhG@n&5ii0lgNVm#ztR7)R(` zBd;B#{28(dK9vzC>%T(!YiVp^{XMP8Otk2G8;SOL`rGW{9A2Xb&Gf2;%B4WH_aQzgO literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/TrrelloNotificationArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/TrrelloNotificationArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..be111941e7b7cfa8f750db4c769e146473854855 GIT binary patch literal 4581 zcmbW3OK=ob6o&sh37H3D2!n?35FjtM^4 zu-3I!`PMyF5uvooqSR8$ovvN$+O?K?&P-2orynKBBAvg_oO{l9Zr^k7{rR7-z5#Fo zH&W=t`8cLhh~az^9hgqxIn40u^GSMK*oa-Yn4%vp@#_n$US#zWtCv~5!s=C48mm03 z0;?h`$!eC>9IMN$bXHebU1en?Fwa@dIIILp30zCSPN1BClYpDRLL9Hfu_z$+2pr56 ztodxoHQaeUTU;_V$JPomJ8j$2FsyOQ(P#C7=IEAr)}AZ(3N)S8P2K4eXz1EEBhWZt z6{WzYoNmf-cRnxeX)SM%C6luXnlYo1z2KzhV9r9EJ1<+7w7 zj<1Pkj~9lh4tK3-WG|y9igH$S4TthJX$41LAnM7wI0eg=*$LMvxlZrCH6>8c+SGw+ zM1j`&Ia(^!=IKDhnA5o{+JcrfG;=Q7Z&`-a%-%jKKRKn((Wi55DnUk-5I%U_b&Yj} zz^pskmXKfq&048scQv-SDI8RCwXm9W0~Fgcpmt zNpqdcmaSi}wBodNRhk03&%36h&&wITtW%FoYPL2n9ciC6P0Oh`($d~h3AdQlR*czk z*D$y#Y2n24mSz`6iUJ#pvRttB61O@vgrS!mHaD6Sll)4yHLG)9H`}so84I$Qt9dwb z(Gl2?=bjcg)U~$C2_iLRxpqMgR^soB*m@4~%BQ9smt|+zDm!U(qlXs6TDGq=y09;f zr8KVNbq;VejmL2!jW_TntK(_(@oOKe0agR723ZZV8e%oXYM9k9s}WWstVUUlvKnJG z#wy1uhvNd>a{g8Vh=d)?2?0gM+%lD&VymbUmg_^#7iL zwXI#CWpy*2$X}svE3mm@avj~sR!!7_)G^mw-In8)$(<+Ap>7vdH#%PY!Kg7})-0{? zP;Z4;SsFCvWQe;Gdu4YDq{CslJ9N@DhVpWsklIR`x{RLt>8&3Pq=1(0I}qJpBX;o) z8kW)c1=(UaK+k6K0KP>dzQZPbkAw7QFB%qaGtNm3S%M7%19F@~W1=mM6$^iYzhoRx+KYCuch2WlDBa35hR}OWi2Av8(|4z_p}J;R_k`l0_+lBm#q zv=kVcHb^=%;A{aydAX<gC2^6-t31yq$E+HhdgLHDkGpX0q9c%-K)e?q3PW9K@a<&ha;i4_@U1! zNmS@z51LN(hz0&&0D6L;CzW_AG+hyV&?9xwz6CxKS;0g83N9%b)e1(u3g|WxG3~8^ z3W`*LRN|=>(ACCQ!Dw9tg6=(03w)~|+ES9J(4!tSU7RAI+XB!_1btnJr$W;$%m+Q@ zgC2{7-sXqCsU%UM$2@4d<3&Jk4?w?7(C;YmRA{;|`k-?@=v*Z94nOp}N)i=1=RrS% zaZ1KJ_`kH!`Jh_nvy%UABc9oL7Z2aVE1KTEz$0FFr)S_y`xo y$1uewxG6rxd*Urxy=6#ja5**ljIC6Egdxhb8lIEzXK_w(pRg-tbswLI-qc>9wKJ{8C;xtd;=mOydU zFr>AttF|p|fv!7^rgI=LU8$K3rRnN!LsRMphU!>qO)8s~C3W4bnvS-k)l^3_jYVtM zo)bu`HAmZ*0)t`CnrTU8&2^ftLzvu#wo6Q|MX+lfVDptdbzfC<)!0>*OjDPtF}Faz zL+h^LXbrig+1j=)7Y)O7{P-k#>=>7NxUH-gu{m(n(2X z+f=RkYF(gEmv+t4np{aLqOREvFK3#TxufZ%w#SmTsqf2rCD=+i@{uEOzBJWACTF^A z*2%ZGq8YO4Hnyd;$&m&6D`rjAw^U2x?_e?IJk+R)N=L?U;^8xy{$C!UQVo!Uf4r`v z>B^d)wW^cgmDr8>4jG2^ykzGlNzZGB<}3&#OH*3{Go>)WtGk$e#26n>`*z$qn&B%c z#)5lAT6Rtw{8U;)fwFbEqq@37N0^Va35e2bL^6um zK*=n9v63t)N&b#hl;?JcCwoN9b@CgJ71I?Zsf0+nj*zgJiCB_!l;n#ONhV`SGEtJf z6G?_+%aV;L%Rz|ecv(uZVscS2--Jkxmt`uJBp)UD_C%6$EJ-0s^4$p}34Sc;n2z@C za}=LY+az$)j^xqO8>--F;WK|4GqJtTST^5|mFnD&t7G2GreHH(7k_5IXodjzhWLwv4Ur) zz{4hf^Mwzz#0Bk1GU<=)Ig*~kExa3~z;7e}vMm)89qA7u+1Azl!$-dtpsyoI zGa$!kO1d{%_P;_E%VEyH=~)ujF862!bXK{sR_dFYo{W literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/VictorOpsNotification.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/VictorOpsNotification.class new file mode 100644 index 0000000000000000000000000000000000000000..34ad5ba4a591d3783fa68e4d1fdc714aa3a9249f GIT binary patch literal 5374 zcmb_g-E-7b6#r$rZMI8jp?tQWr9h$Gwgi#yLY4BNK%v+|74a+GO_#uKvLxA3`~npa zP;h*9#u*h{ zRWsJ(JP#Mrn854&^ac+Xd3ckDOU)RH&7-!LUdGTHv9njKv36p7LkxQcu zx{Rq5x|hMg6<%NEp};al876C4GD;Gfw5)4P>k`(FWUZoFDi_K{L(N*Yu8x-7QrR7p z&^&JBP0cOaBsNe(?9j*+ZCX7z9d5zp4p>4#%~;wP(OUv})^)RkpLbqaH0gu2mch*1mInwzB1Ux;pap zR3$7QceU)*Gg`^Z9~swV*fJa$u7u6egLiKJd_+#*1}_XVYIyF{v*kj8QkcBPXHJVOzLW^te|PPk6U!N37Hi z?k6NF2^Z9?C&My_L!OHdy8fH$PQK#ds%!9G^6l}mo1>M*vqpV;W*A?{e zn=T%DdC2fEgZ&D2V=oT}6x=|cf|EGK%l8$0fDdJSq~K%RRB#KQO4uc|Rdo_$>u}j9 zCzVz>zLx}ILfV-rAp=K63|28vEb750XGRUUPc%u^?lT+sN8JjbyGsh zzfrXU`9D&NYF0V%16?r3izSyD$VT0tr{j)bwQnM|Bc6N>k*Bl;nmq}t$;^U{Q9@4p0x}*-7>@Bqq^5=B<|7vb zSfJJ7S@9ap5yPP>ov^0pCxHk(I(bFUx`P3siYV=AotDcHd+tuh^{lPCeqT?UIS~Ma z(lwaXb6cb5`2|gGxV2aS;?`KyZT`9NZ6xvP>4{}-DY9bTE@h{KG9J+{4Iwu|t7Fj~ zbv|emoyCY#!CX(jM}a0JxTezh9IX;~9-TC=frL$HK$k-wH)pX0TQ7N^sq$7tw^fUF zv*`ADQL4+eMSCKmRK079c11*~#@80@jfm1sP+K%3h$^((4d^4`e%ho;D~aaD%rB6B z^maW!W0Uu?3p?nU6-a;reE0#$SNMa5R)i|nvlZxQ5W={o2B$KQL zIV^xg$-GD)U9ljI)gY&z3ep=3(o_v{@u?u0SP;1yB>z;9-Pl8$;s70?#7xlKoay@+ zsaZ7tM2iGCNNMkbg%nC2*jisOa4@NmSGE(3#LYnfcM3@Y!zuSlXWQ%bR(9ATyqm)U~+>vQp*4O_Rnu+WWNcIoRL7BtyS+uaF27&i2 zwBr-cQpVS;Sn8-)>If_mE)HUl^bZlr9weTi1<58Ehh+@O^dF=K|M~C}`YgT=o=NOw z@+7c~_XJ`-Ok;xk4#H&q*NJ~4&8^ITpgq|iPx?05z2lMI?Tc4Pw^m5E;+S_92@J<^ z!gFJ*M?Z;I$b^5MSZW(l@Xyn$9=nz7!FhH*$250x0mqv(Gyl#xw9aA0W32oWZEdUO zu=+99JjU8H{h7Wwtm91c9lh4$c#l^1iT4An#zQKEkA(1cdc4?Zr^lN9=|%}~np~X_ zxbnAcUIThrB@*CD)q&yp#MSDofFD>5)k>`eXJ98k{ zuIuB&Rqka3J4Sz-9gO2LeQ2XkZIn8BFAu*& HKB@c%A8nM+ literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/VictorOpsNotificationArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/VictorOpsNotificationArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..5c438f1b5b1a9de7a6ae2d7925ef72d834192539 GIT binary patch literal 3427 zcmbtWOHdqD6g_YF%!f%J6D1!sju8V4pGk-&z)Yfm#>5bafS9PL&Cp<{hVHSaI~BHS zsaxH+ajjcZl}O51R#q-t>DslfU2B!)xiii1=$WYs#bUbeyZzp|=iGPSee>&oKmH8h zJPHZ)U@D5~1R|J<<2YVP;8k3b;cIa|E_a|CR}%d2x(u(1H6zwFv1Y}Z6YIKIZ-_N7 z)`D1zF}x{gOHsTP!;Khj#_)C&??mygg6dT`JyUQtvL(OhZ&=yYP22EXqhMy2tb*sb zbEWdE<5_D~!SF1{o^;pCIfeGTWn11wg_iz-C56^$XVp~boUv?k*56n$-9=-iNKb0U zDHz2i!?k1_I9t6Bt+GON%D0NErmK*=V%w%WT{OyNlOM+R$fq{|BCoUkdt93n`mt4W z&G3sJW49Xx&$>F}TCu`K4 z*;&6>loP`Jo6$2FaM}l>l$OWNu0nl3L|^#Nl83~r=wU-;yt`C z5PeAuU@(afV2G7TVpN8sVvUP6F4lxt6Jq7W%88X1E02sq#=KK93!b@}E^TjQy06+G z`qG}0UNO_QV-MThJc+x)Q>?Mp&bPu~BdA~(!dOja2U}D>d!!Ne&NkLBIH$3EjDEk} zz!bW6TF%_cEv81{P{qZPDQ2rK7WhHe{K&UlbJnq?uoX_}HC>&?HW~(F%|x6v9`1&- zHO^XQxn``vbPc<9gzCcK3~$FCUcihi2FE;I}J}K%~MS@o%ATq(o-e<0$wDSs02JmL&BctGfg|Jpd+l{t`<>O zFp4okC}|*6EKuRJC+ieEq=KI`JY5015z%x7~cpEfJ`=K!DzqKGb>0CgX*GUu7sXEgCko3PAo=%!~Q;2jvL^|J;^x+U`)usi} zN#_I77jTimq`<#s%_zQ?rLV~E9-^ry9^lDG=$0;1^CnYAw!O(6Z&&K*wzq4?n@Szq z_NK(UL$4ccJgaeZs|1Er2c}dKH`IX&-D+!E4mwH;ULvgsUdCkQ9l`T_CrI`@ct#NV2g-$33H?~ZJ&9JWEscrCR5$$=9HyGe zliP7;Uxwc@uAs|J-?802J5>DL-^}YD71CghMNHoyoz!V~BdDyIKa`GM8QIqK30}Y{481`!OaNMrQv^Ak=<*Xtfufi14~%V(yhcDxy=}*pymcpNPfmD1y$`sp*R_%6x93x z3e_8Lwa~Mg1jnm%8+MBzY2iy?EiC^*;@5=rhmgf&^A>#s-Rv3A$4P>EiK$_4mX`V; zpW=%_N&w0INfTL|dJ3m>24@+5b0f**vmj4WAcZp^cK}iyNv1G@Of!WuOlE#0nPQgA z4=IpgG7BR?j4a6E|A6Fp2yw5oHF`s(-!e7oi~wQhdf)jM)F=m^hs$tYzJn@vN${HM zQjXVrm-4(8x@ZEd#V!?jHM(S+23w#KKzzzmfQERD4hk^`5%_5Yi|I2uN{CGNg7xcz zu;{QWpi-v$n6}=1<`NsU%Uddc_l7E*7eS|Ocbr&rQ}OK|&;&H1GF#&kli4)>oXS8M z<~+tF5E`V9Tb+NCZ^=ZscYddL`CjRWmk{G2_Hy(H|EdVLWX6}ERT9m_8!+=9Y%TJM literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/WebhookNotification.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/WebhookNotification.class new file mode 100644 index 0000000000000000000000000000000000000000..0186190a8c9f812f3b3777fd258277bdd5f349d0 GIT binary patch literal 5824 zcmcIo>vPmp6#r$rZQ3PJC>BcbRUX>Mwoz12iXhY?LU~A`i10CwU1 z4)ow59?oU(FdpHjM|pURhsSv^c$nrP$HPnq?uD75r&%8I?KsOj&-06wK`)-jU>tK9 z*eGPs4M&B`v&YN6ihu=6D&`fm8M(lkHx=|uadLJXMOx)(e+q;+A#{GIUOt%XHFDtl)+-c1&jM=Vl&YbXEa&dt?ur6F4pEsT0sOjZR_Da!Muw7$@pFDTgvdNh( zCC^sS+dt5N3VVOdogvB23Cl5$l?v0Qcgi3w3c4oToMBHHp2hFw#dL7qB3*+rUe&(| zekBchL-n#J{Za+ zUmyE{DFtH*>&y21elPEjGD_N@C!)8qoeJE4tzFjWnZ8@{a;C43mHfahoGibGQ4E=? zt_UfSjh&rlTNSLH42;~|QKKl*RK*1q7ga2%cuK*Rc!fGqDI~E{wOIthx37+nylXj5SYI&a%$ht>;PtNrN0ybt7^|4g$S7DdW6l~SJ1A$fg4g~F z7Ky%HA+wge87Np>en4Zn_&;T^?DeXO~Ejet(wsYb$)wM|UrdrYMEP8WA zl&W4NT8G*nL#5gni4N4F_Oa+-1(hmjBwB|$6hoyt+gLOk6Qyb#iPjMqjuD`m-B@%a zCQ6mPv8XPIc9Od{;}#OWmAtIen?iHz;15u~5pLf>W1Cp)!)^4eg#x%8chFlHxt+AO zJp$Q5Zw%5-AgM*P)Z*w8PJ0Yz7wzj$#7QUM+}#l8PQvMnaAc!eYsnmuKw4vD?jn$( z2t+ojErHBg2`6q8lgTFHs0ldvC2@u$9NDP$TBAx5NWD=bi69-dATKWoq9=l6YC%3& z5@a_<$vK>O`{~4|Xzmys`VOnEK>L4WVE;R$NB<=!|m8Q4>>! zJB%~|ataP*l`B|Xi}ndrd@9hm)R0_+)?P;AwY#yGbTRHenwjP&bQIDw_YQWg8Or{S z4kG(G(%IofbS`4;6|7@TEfVi9unAuZO@raiNKA!(3;q%zv^jTgnKaXkAKsMCCX@b( z^nNW!-yVubq&p+hoj5FN41wVYCWIS11^qORl8UfSu+#ui2~HvEk4fTN&3)5 RpSmesij;e=<6RWf+CSnk+4cYc literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/WebhookNotificationArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/WebhookNotificationArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..8d6981371a5896b036b8e66eabb3395f458d2362 GIT binary patch literal 4502 zcmbtWU3U{z6g@X7%?FW>P(l&ZfJjT)5>SL{3;nWf3Z<Jkz};UXemj{oJ&v8N|GKV$w*QyL1uz1LE@C4v(pu;R;;^*ThoixHB)nJ zts;xJWqH}M9?V#dzNl9;N4Lxod#N!XsC`g3b?1tpc=wqFL2YAJRSMcat($Vjt(B#H zQ!5*YWT&l)W-Ms7&i8(>%~{qPf)b;yZd9c$C^Kc6(jGIkMnmGk#T}_R<Zo$8A!qoCaOIa;f4%u`>) zJA>0J+NxGGG;^sqYFUQV%z-PgpPJW~P&(I!1sP=_{N-Kyy4D>cX4hH1&HyPk=YH(b-vYjQzv=vX;(nyuBOBkd8> zw4CNj#B>~MPS>NNwiztWxQ4+?4W68Bp0-x?f18zED<4#Aw9~9ukGk2Am1YmOneZ&A zS0z-Ij@rrdj;)(Z%~ep{X8Yg9@7m^7wekJ*yC%yjeeZJ#>OiIS#kDcRYRKxGZK0|) z6#bwV9$%HFb6wg?ykjQn+L~c$RYtb8sPonvcWpz^o-%K;g3fjCOdR?rJ#V>oMNTx? zjz^pYXL&0^)n;VFDOn9CL#OC9)GTz>L~vy2B)yuTdWIg7%>;cJD$@B3H3)n~I+vk- zzU^l;#At}oFr#5cGvqqDQS?ISuYI3hS1T9 zVr4?{PJhU7g?n?cwWOo-_}DptuPx-|o&q`yjE=Q~U|F zeT7(zx^Ufx5ky~88$G7|^n|)`m+{`AGt`Sa=IitM<}ogY*pW@Xo~N|u8O7GAJ%n~0 z!=F-)zHQRxyjOi%kkDC3#s?XB3`b>v=+n!k4&L82BhinPq@NVN z^d?`L7ZKQA$0*MNN8Ui>0wOVbvzh54uAJ$zpD9&a90fpdQCBi|b#latN@TbD3I=~hMHr2t@=^B!8dwhXL=cC~spHBRHOo{A^PwCh*I?iX+ zX0#*w(nhpnE1Ju`yb;Z9MLV;vY(zUbx+O11d$8lLQBHhJz2XxZ6`#@_@mW)@cfj5A b&!sp`LspEg(@gU}Mm_jXLu?+=0v-JaChfBJ literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/WebhookNotificationArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/WebhookNotificationArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..b6a7cf579c636795f138dfc237733751385fb047 GIT binary patch literal 3121 zcmbVOYf~Im5IuKU*avG!FcL^Wi9E6p!iYhMf+(*Tbb$yFOUp0A?p?Ua?94h3O8f`@ z1FJ0GuhJ^3v~(+$sqzQ-qb$2;huzs_27_Pv-o11Bboc4L7yka|&%Xf7;q451u*7CL zixsT$ZjH@tHm|d}!)Be$8*JXpq8Eh}HnPZ}z-BXrtt@>h@aMZJyd{uY_LNbQwm@#( zG^M>_=#C>DfzGu`)jblJE)=bbR`m?8qO{VHsk^pbl-fIT@4&JiY+9}=tD^2I%UrVe zoq2&Sz38e#DbOGGELyhIwmi4$xrE8=sC{DcY=Yg0fh`p7>xa5#=;pq*Y*~iX&G|+0 z9oY6vS5@S$a@3w7mrT=g{rHsh=m{>p`B_`9R4tpsCr!OVk<+&Pz*Dv?b&$e>v^bDD zNkKfjCwS_qFNDvVVknc!a-uZ3Q)l$0;pDIQMSZ9>)6zCQ!_cV^`kGdzBa6N&Q{hM< z@xrR?xVAF)eNirw2&#OvVpxtW-L);^t56*m>c?w`(sVbZz0ZwJRrMpo(o4Lvt+Fym zi4M;;1TN<%VxqEUD^`h+Jq2aTO|P;i?R%WHKySe+>c*~aEB+lECfx%?v9wsma2?_9 z_K}C*ch6OZwpHc9(hZ7lMt*2%NQ+F7Q~S7$;#RGlF<{iRGSBM&=4teoX{L!LR8vc> z&Cm@Ox`zwORPG`*H$Sl}Fq03vH)l8QBD0Ser6JinejskOX7HaBqruZc$(PR>{7kuq z0;Nl`tb2w_vzJ~d8i4}Y9m}(e^0q(ggE19Pvx)-Uo6@1X!UOK)a0&f645L4V?HqP+ zFNYC68DcZWW}MA6HhDG^Y+k^N0<)oJJ+@TrJ0~!87T+A6LZ86ZkdG}LzhFn(4tD$i z(N#TpvjnnM`S=ME$mc_^?$+LYS#;+kFC=E@Pe?Dln^_ES0<=r8T4V?O{bgLC^*jUy z>1@cMk59jcXJ}7yHc(f6R1f_gBqX7R@vQGoGB-eVst{--08twnpwV`wp#Vf}YJg5K zjRhcTV?1a)08yJ8pnAAadDo81qdAC2<&RM`DDkL?I_exratV`!yH1*D^h?m%Ir%%p zFTO}qWV`&sVcej7t`5Mo-;a79*lifk1tibYFD6M7N#YN5wDV{oo^%V(4Ec>j@+2d8 z7GrrhgP};C&Iq23Se~22GZx9y6~Xg%D#=77Nw%HjlT%0%{EksRt+V$K-M_ZY-lq{H>^v7Z|46f!AfJs%a-O_S z(_4e!HBm!?*JKSzUOQ_v+_ZMp(8X)2h7_;q8qF)MnHn;@W^2eclbA*~k$;9HKBo)t z1uo)CdQ85;D89xNzQHWM#R9&=D!xYnKlsV^)e{P|r_^wZt_=NOikI+mkoK^Tp{w!; zxpyDp3D%CDX0r7w_mhvF570N!K|3JBXe#tvyVO62RLW37{9>l@N<-q2AYAt&^ia6- izu^Mc7>?LWF&618fmiVwtx5Wtqk8!f=3Nh-#K6Bmtb~mK literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/XmattersNotification.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/XmattersNotification.class new file mode 100644 index 0000000000000000000000000000000000000000..a2f3de25e92a1795b6e04f03ce1d3743b0ac497f GIT binary patch literal 5550 zcmcIoSyLQU6#jY`XqYr1fdm3kA&UvjKw4uK17v|LW+5a7f{Af!hGx=9Pxsi}L%@AY zTprZYDwh|ltg`e~Ei0j7mF1gNKKPT2=XB3xi4WY{-S^z@d}q1mp5gC*@BRT` zKR#(fJEnMeE`dw9%umnraD|5#czBVAmzr<{FDK~f6&|!kTx9uaen}^=2{Q?dKu=&6 znFQK!RffT{$)B?_EEcq7s7 z^ulK{Hm5C^wl>30jy-Fb-f?6mGoY7`#{tz&jt zGp97i;P=AExOdec$EHNQvfHBEMJm*)`bGQ1WHD>)$a{vVp38CmXyyY2k#qC-D%C}0 zIOFW9h2x(JA&?EjhGlq%By8+m8q&Tg3CAM7uiW<|PR1Q#n7Bqy6o^%Bm5_UI{i04s zckR5B)?M{z-u3M4g~EFf$$+bD`(Y)zp;J+7tAyqWPfK4vtL6M$mGPvs&Kt3JERY*27>C>D*N^tIOzg4(_fzqM>a3zmiyVds#=7d*q*$laKUR zw6ceLDx-B&F(@(NSHlzjUELWaw2QAA2}u#wPtS6Va@At$PtwVyLUo|z$U(!J(dX6q zh%RO@N}GaCbSc<|E*W_RbGV^k2Y>12p^t|o4=EnzF{of4p5|dl!2N8Z zX#=KRh980Hy3k<4#H!CyUOvpNUfvc89D_hK{auT+I#9EC2SxyOAMn7oC^eG zd?aBs!W&iUaMAcefCXChzGX|g#Ts^zJ@r}L$;aKBe{3jG3Hi8!{k2K_N#Sx?NiANt5)} zEB-Rovy$lcO3`gB`gl>4s$EHR3F?jzD%Hf2=*~*iZWiq=qEh9oF4`9orTSW3G#L`5 zDqLMOC5SeYV>;1K!UNyy7h`q_8TE*cyBk6UONPyzuwfhXxL@bPZ?wygxh zZw%5%AhAW%RpO`uPGbn?DcZLq5+@#kbFeDT9>VD^;fO}nSCTm+fYgV`>?M%CNRWm~ zkju-0BqKrON|4O5AgM@@#!8Uf|2-wFTkBfoB%oGseb7W)>NY1q+@x@N9zgXN@$G*G}?;; z7$jYcJ47?n{GL)TPIFhXRY~>#g(f2V6XN{?i)dcN+B;}rO?3kAPbr%}^ED-doh40O zB~4ugO@xbK9Hjk+2xTu~_plc61{sHC9Ff^a!SmsJv@CuvJd@Zcj?&s1wjIR$7>zOR zBnXrF-yr_=G`BGSfzEh;H0du$@0UL5J%Me_KfrDFp zhkiwGUz4_Punyk}A?@(Fu%Zs1DRoH{^t0sNn81(Mc9Nq4e&asBW{x>~E*P6|4(CY; z`){@of8}?yU#8p|xPy)|p`a}NC`6mP(O%|21le6&h7{jjoa{;=+GTgKRGH4R)!bEw m3$#6k3BQ!DA=pX!>v3@r*J+`Zmf9#?u2Js2iw|)vuKWk0^Swd< literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/XmattersNotificationArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/XmattersNotificationArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..7928558eae070dfa6f3c598c4b02c7c3a4c3da2a GIT binary patch literal 4049 zcmbtWO>-1g6g_VeG9QeP3^;&*4u~X~5QdK+=nQCP6hUJ62nJA5J2Rco*y)Zv-4y%_ ztJFfby0%KIz))IcQ7$cAyVkX9-C3SHAIVEkcWL5cdhWaZ`rLEwyZ3hg^!Il^05}Od zgS|MP#OoO(a6XMaxRAjV-jL;VnwN{4u@jdvym48USHzkT>#A69iZv_NHLMGcvyEocL$+#KviDJZ#{M7l#*?xCO5pg`qB(0dEq2f)!!s65Hsz$_xPGf6 znUUSCjNL66E6&n%VB6AiRCQ;Ks@3-XkBQkh_tW}8tvfCo({h?-y;aNo4rMDG(h;>5 z(kpt#_bg|j)eYtv<^Q&S<3ca!4bX|dakQLP{~a)v|B`Xfc8!Kuo;z>JaP12`TVd0j zj8TQ7BkK&w(#XuXfmb)rw&3>0&HKYLYj_;fX460CHvKFL*rzZa*%NUfSv-wrl9b8eXJO&CSckHhkmZC}WwFX)Rm7@@H7VAlSXHsAV%5Z|;gCYnyt`!9eX~(m z>b6K>xIN8>3%*;JGYgLEj5}-#VekQGu0~%g4TZ5Ns80IBSaG}CN7TD}I0~D`*t_$D zMsKxu;0(Vo{_sJ*1aO`jLjGlV)ENO(#8p6ZEu6KhFp@VFiC^5p@L>yi5osBb!wh zRYik63jU;mzcf5u0p~x_^fQ=Tqd+3Xksb<>R!R$^lb-C5=G!HPbS_LFqtF3naZy!_!Igtr{X-3z4qHl72EwdQ1zV zldg40zk*j8Ov>Xv3th(2O__}Hdw^sv{|GxCW2el?74KkfSJykZ>dobz>Uwjl-tD>F zUGH}BuF}h66Q@lHd3A&z5Jyo}$8cR8Z_#ZJ*PET0*oU*EmB4E_*ZNOjnEx4)-9zs| G?D_}mxQcH8 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/XmattersNotificationArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/XmattersNotificationArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..be2afdaa88e6d759901a0406c5099d81640d5893 GIT binary patch literal 2826 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 D=u#jj literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/AutotagEntitySelectorBasedRuleArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/AutotagEntitySelectorBasedRuleArgs$Builder.class index 0b779ec6fc3f51e3fa9793781287068c8956c8da..1db80a86f3e4a236661ffaae42533be9221e2302 100644 GIT binary patch literal 3083 zcmb`I?Nb|76vm$$UP3~6DOK89wMuIXfp!JdT0^k}i?odaNr%yy_QR4~aB;JX`vS%B zgMX6FSaEd5@w0!F<8zWN-i8D_6Ta-8d-vYwoZq?koc;Ts-~R+~8lv zwHLc_-LYzio*e~tRa=g?7e}GB6i0q!@7(tyCpxTXS63rHDB7W}ZN#o#3U{%%7+WWTU+TM;;^nF*`USW|r%2b>k-hnvac^!0u zYQOmmNhda9-nhEnbV7#-Ubh3gt|J{Rc^fRG4{%^jD(5@pc;7-+z^iAFn?{nkQzq5(j4}KV~E=QD-5A zNk5?(d*6Egft>2#zU{_(Mba24^leF7P$*7z8x5~Sw&KS@Rj)YGjBfmYYr7>S!r;m} zj8^?H%3&NA6c)Q{m^r+L*VFhShcebg@=6Zx;%XY}Iedu?8BF9bgRAnOH7nMvSaV{{ zi8U|QJSG%Yx(nt-cTpJquOF;!?Xu4+oNG+Qk>gs;DIU*opudZqK$m?_icR6Vd2^b} z*z;P&nEi1hQloh(r2K6bN?V!sTMA6a82^d@H%m5Y4bkT5@OhD=B6?^6qxmDK{2xet zeT1Ip=>3^{Km`L_ zC1E!8vd4N^xjt08#&1monR$;h*Ey5I4NUT#7Kc+b#BH8WaeFs$o5_=B;8$eCYcoOp zTmpP$c+4Do%ur&Q-+62u39=^$o{-?Fp=T2Cx>L<0n88iXGzo6C63oEj$94pRtpv8= z(Il9``;<^pSsl(GcY;8ZVB63$30S67GYMu-Bbe<-Fw{!0Yj`vXW)lK-gboD5CkQ+e z_=cWI!1mHYFn1ckTt|YDR)Wy*XcEjN1nguT2u4p39FX9dp=T1XEw&KMpGGj>k>Fe_ z!4HN0$Y3mHKo!7LV;KqQai(pII~G^>Ud7LrjT4* z+Ez%F{DxMTt~j3Fj9N7vY}qxJp1F!&x7}?!aAX`iQ{fLzTOnPH9JiqZh1^}w(?Q9# z+ilGc8zbho5DPQU(&C6(1;LwW=p8$9LrGeDLefyEy(V4v18qHsLYAx1F}b0zb3^yQM=Nta~2YF?4*7)j!oi_{p++PHQuAUD*+WJXst-c!Vh)8z9f- zXvb$n;nG`Fz8VIO*X$I2?`?|Rn}38L-_g2`>_cDUiU!yMkldkSl#U647< z;aD0QIo!oPkvyHlM>w0t{TwRzMh0hc$m6U$Xjx)eVy%d^f-?%`(NcJIhbYYacj_P1 zp7J(VnC-Zt&~dGeP=pQ2|(3`#|M@r#>*(BX*yxIE2So3)!Q{#$KNccNE69Z)i zFDc+E|5da6^>MM(kk%w^?g^js92JqI1{REGVh$cZES16(6JPjep9U^!_g6|DI zlYoblY9@j8CIV|H!8`o~H6x-)V8sNy2Zj(#9U|BvLDSGP33#dW5v;t4U}Y%5bU(o} zBce&L5))j-CyXrHY4I(6HzwzxU&imqbX$BZZpI`&?X>J?_`LH@;1u6kip;Q)-^a;+ E0mv7Qxc~qF diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/AutotagEntitySelectorBasedRuleArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/AutotagEntitySelectorBasedRuleArgs.class index 3b1468ff389e801c7d547abb1bee0f41889c02c6..3920e818f542c59a8a60f9ec6b4d5fed4ce90c03 100644 GIT binary patch literal 2359 zcmb_dYi|=r6g}hT+A*X&8c0JNQbKV;!cx-mh>eRA5{W8Jq@;?}j}v=v7sj*JK4{aQ z&|lN4wWx~JAJ89F_1^UcZ($uOf z++%Z}&4V(|Vy%dJ85Y*qG>Ujwrkyq3ZWi&CKyf{EbVqptl_$n1Z$nGpSH3`gv)2!f z1Ria--JabKb=Y(4&XJLUC)>()Og{{KyA=j*AiJ9;aDt;oU&R(ch%j^1e z@}Z18)T$$JIZ4)bJ!S8P0TB_XwC{9@JoJ>n${1K<`$@Ji&l%Yx&ohySAMFvw-U+p4`2;#+T(2j! z^HW4Fu>2PHFr1{${lIffHI3OH{2edmg6|#T-b`g{{14fq^m2k9zcJKo|BqN3YTe(;UrGV&|9fQv;us-T7S3TAMzf>}0I zHgjxlpeC^OVe-msivrElu~l#m=LO~yES~bCT=@20JmdF=8YFr&{?ktaW%ucEV++)3 ziHBwP@EN^g_0%@R=k#!%rMI_$X%;}U3}=t*$I*NWmuQ@%@5`Wf$*0Xvq7BOGYtWT9 zK{GLkvOXR(8-wUp#)GOch;D5>Xf6VkN#F%sCD=SEyhC4tMr-MJh(D0|B~tw<*+R5_ z3D;;|8Dg*yg+2`VI<3v5@?=wZs$+RRBc9n*o?Hsg^%HrjsXX}VF+V}3vmXeWbL>R3Iy%M8Wk);_>Vl)Xazgb$36H%9ND=ICE5_O!iYq7hD oSC}AomEUlNV@i5FM?P-TT80|*4vjh5weS(mxXLYR+DT0R3%RcamH+?% literal 2212 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 V$&p_AUq`p&e++@U;7!n){{RXOfl>ef literal 6683 zcmcIoOK=ob6uoZ}m}D432oOM20t86HXFyPpkRU_kJDDJZ5hOu7GfmPk=?*2EgRTe9?(5)Ne)?(}4Gr>7f=q+O)v_U+f_o^#*3_r1=&f4=*H zh_=)97`0P2O1T(CDBDP@NsrNK8s*!uMqG?}w35!m@Zc=p=Ghu&%Vf)9Yl5wFY}srT z*mBq^vUQ%V3v69v>(V@Wm0n}(b@si%)|+g-#n#(=x!geSFo}1gbftmbi_-g1x~fRE zE83OHTH}d{V!k+TByyKb&9Swto-oXbqEkrpX@#*7OS5woqhEKloaShI?9oEEqPe>a z({Oqf)pc|ZDyrXW<#a{!Q--Ohi{m4@eM}q4!_$(ovRZynvkks4JL{b>qo637EE@To zZYzo(G)>*!o7V~j9S{0u!L7Xv3XZ!wW`WbqvKn&wX|0%dz^OTFnFXWZ=%%yR%3C&E zr>gL?maQiSiVpJE-8qZELcmf9Bk>irR_FE7#8hrK2E4N?bw)d{CGwg%nn+q!Uf0a- zUL>h8V~k?*i#8^!5G2U|<&adaI$AUxV_Y9J3I^855zW@dbw{`Nn5N}uj)A-@T3(`m zF`-qQiF7fa=S2k(Cpvu8g+y#M>qRUJ>)H^EaB zVw{jtcfE@2Lo^v5@gY$rrCN9-H;8Wpbv)xBmX~i!%P)^r7%M8hQ4t^O682Zp%1B$D9yAR z`Y=MlINB(tzW4qGQ*?}cB87vLJX2H(h_|>a4=AArA%v8h!E#Ym!i9CJYj#U&8dp)f z$K{(FMQ6N}e8+{P|3t^h+S(5Zd!Y|BPTNKEtcliwMKu4smN#X;1&EU#F`D%x2c*y!%7E8jO2Lw@LN;vNrTX}#baunJC`)=`I|oijUXaodX18d@8r zYjOI3K4iGfae9)r#pxsZn60gG>fzfSwvucm+1k(6ezsCxpWz%Hq z=Zc1{r!AAe7Zk0Pd!;)Jh3y5yI*C}PvHSau7W_pL@J`b-18#AO)>IWybvW4ocKE~* zq$+!Q4NuyF&-`}$0|JD3X~9|s8_N{ePTVD_4i-^!*KJZ=-&5qoZK|83`Wx^?s0-I7 zj3D}v>ggw%Pe0Ro+{N8@Xagm1$9S8|co~d~z_+A=xBd>zxl57TG}j0A9)|xyt@LXN zw$**L3=0s@UkhNxD<3qN@G*?x0I{x{RKI?bqFvwOuC7Ft|Cd7a8#U1H0xwpI2 zNOyvCm%x*xu`>Wol1_O@rznW@0x#)pB8ViNDwD>(6R_G_YDo8j^lpJCNn;c9knX=< zz4iyz>q4)BgCe3-&|j`s?3V!w7S$-oK*2GAClz4x^(aWw06gwmIpSUIX?h+H{T9w* zuYyw|qEwKkqkvGn&j%=Itx+%r1%|+r3UFuunp`*;bm1ulFL)K;L{VO^1Nh~JJk>Lo zumZPJmwKiuh=@`_hF+|S*a$7hD-lo7W!%4n`9ZFgzqBsEQYn_E^*d7Ifg9kO&PQj^rGZqWvHyA;|zQfw)2{&n;ULPSWT TkZ!+ diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/DashboardDashboardMetadataArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/DashboardDashboardMetadataArgs.class index ad981e8abe975723d0e5482e1741149dd7ccfe5c..92d7b6106e73a0bcb696e40c45463fd6474bba3c 100644 GIT binary patch literal 4093 zcmcgvYjYGu6g`t{vX3kYARqxW#6;aBgh5bHvIg=1MV15!20;)fyF(b9or&{6snRcg z_8<5U{G_E@s8}ezrOGOQk>$CwliAtLELMW@<#tc^>2vQreY<=2{@>r;1#krKWU&RW z75ZXCuUyESuwARIVWa8%y}_yh*`{G8!n{rW)8i$Am(BkmvWrBAk%N9aalon z+BeLK?kLEgvMk-1F*VoKT?Jhysw>_t1;tX?uBt1(=~oT4a?8>@M=R^9VXgR{tIlff z^(9+#DpBW*?r9ax)25tdcS6DDvTeDB>*Vyzh~X=7fl>EA{ z1r8Nl{*V3D6N&unYfInIeZg}KYdMfTr zDV%h;Y?c*bnE!)t3r+k{LMcyMrnkul=jD5bsg_u&@%oDLlnu!E*1Hz7BUj%|%`_@? z;ZEzfII^QKQm@N^XMRNrPcx;aX6y=Us;^{N`kY@~(w*~CND8)=?6PJqQWE(N2UFg4 zgKQ@f*_sL}c5vbmH%^3v{NXxzHg?n#3s&5FkHmdb{fgUNbQ{YgrW7alx1Eg37;XHc z(lD`hC7H!_Y8V{Se=BAop4|v>aO+0m2u*jACC7s8+n^Ho|} zeU(l&Z`V2rhr`#6aen-8fjvZ4u^=)P{hH>R9*=mYST;lDatpTaly%lIuZ5xLC5<}q zCw0HPxMlP>B6f zm|wb~m%WL^OB&Dd=g>AjU!o)fV6Q_orQIF$_uvV(ef)kB3I<$G?hPiWbp(2<6*L%v zxEB#>#{#MX<2x7HGpn85WIn@xvYK%Z@m<|LWQKg?7)`5fEfrI=~*k(q* zg7P&wJ`Z-~5N&rbK7{Al&(|?{A=ujbmLBHVU?NXv0?)y=JV(egl*p4x;F)U6^CEc$ z@KTtU$}h>Qi+OdmCUrJO($$pIQ7$SZl61F{Tzw$PNMc6mgp8~hPo^mtQFt_wCzHVQ z(F1wL5_z%-JfF1XnP5EQi9ERko=@BI6v?9|^7JI|eAbrdW%3+IM{8@l4gANZVOMr?jaWQqp$S zSek6RYv`6XT|-*hOpQm8ZMKH2w7D8`()QHQBW=Ehd?TpC*hFV{k;3;pqd)KpzK1>d z5ySWi`|vY^{RKt*idp=I5`M>d{DI53A0)A(9%xu`3>i~A-TViMY0QM_>Sb{vxJ)uQ8A(4By6d@vEp)f_OFSmI e#yxJQk5@R>fmd;gZHlwK*uh>d=xxDv^#22$Z>Jjo literal 3953 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 G2mb@W)~Uz< literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/EmailNotificationState.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/EmailNotificationState.class new file mode 100644 index 0000000000000000000000000000000000000000..8f78df844f826d68c878aa42929e6a5a73588369 GIT binary patch literal 2957 zcmbtWYi}D>5IvhXe#JBpN}3Qt65=FI+Gc55C^W{9S3|%_ss=?u;>+6Jgj?3T);=o2 zKj0rAA>J>6gao2iD=P5=_)&;6o2}!<>(YiVGuM01J#%L6%$5KC=g+?YT*ZwH22jl6 z4U}Z{rkJrcl<9S_za@GhGe2 zP1`ozRm<=^)6>wmUT^q^8m^S9PF-&VR!~=Z?a(%S*QlDhvKxW#>FaevS=)}U_EpvJ zm1FPvhHoxuNE%gN-8MB0x1X;%uBqd}Zln<@xP$cYRmc2UIJ16BVb%YF>CWPnc%woQB>o_*v$r z_77Jr$1`g;T!+f))Rbzt&c3pkLdpv&x6G=~1HQwZp~Boz*+N}A4XKM^iHcRHM*Kio z+2(doubA$8lBb5jvQsszJ;PPCMDQA4bOj7R*2V5L;P^5 zg(g{4w(?6XVqtDi!_`82hL79%a#G9lN-7WLszh~9K0^6uE~(2sosj<*G+i_IjllAG z|LJ1YiYk-cbpp3)UJtu&G=BIOWMDP)Z=0UKWlE2EIh@0A3R^jBV<(4k4CgQ@W=hPM zn7o*2F*9Oj#k`D58m^tbcEYfzVe!csa(E6y8YbILx~3QA?&&w9)v|lQ>I{bO(?f%% zA?xfvctbQ43T*p~_KfvEFK*N~F%@@NB zRjvI)>+yt~{b=CYC1?!}IAQd1hmIvN1fLb>&%L2l8#BD(OQ}CwA&!1-}H=&8|ZK79vqKSm~z9s|EC!0u$ zPc@MepKfvh=rc`Z#Alnx9*bB&Kgqv90$*|xzQS32&8O!Z-tM;)^Bu0>dlc~l*6<_B z_$d@SbR;MeOKG^w+2OxEqF;$*PlOoG-hJfWzl*12_O!ONe+kjAM(E4v>SgMl}n z_1Opi3!M?`=#1mDf0V;_vT0pH!c2yjyXTxe=R4;+=iK}6e}DcBU=^R+n1x%ydp0b% zWz1m3#{0M`>a{YD52o=UR&DH81cI0u(CMU4`Oi*ft8Y+g@NAX=l$w zJ9^Kj<@k2k(*CZFJkk5cV)DR?6-pba=eJFy;A{nfi8g&5$A&+yk6X}EABlxstBf05 z7Xnjlv#(P>VRpN164Of7yIm^H=ipjlWZc_n!p79A|gDT8F->@g$!=_yx z5wo`aP(RYHuY>#UMi}}=2lbn5M7inR=P1*NQ+P0n#qi))p?2x0_)awahI~_J3i>^|>MgU{;Eq5^#tZ-l9(omS;A$6?qp_}Dv$zW*} zr7~sqn&<1(Hc+4h%+(H{YJb7{`T&KeDE>;Dg*SN4&;z)GBJL8YiFs;H7K4*`lbYZy z_VJqZvuHbcgtz<$CjNnSfXN}S_vpS$$gg^^^I2#gmLPbGCG&xnF|rIPc!xfcz^?s< z;__3JYQIn`^h%Y7ANU4S&^bK&2+x+?Alg}aWfa8n4lUQHMWc@}kuwP)1lEI@KUY-GWnP_L3@sL5~ zWeh4K8B7l{_&%30&!Ez0z-u#tf%5``AIRXx9A2IQ@8AG~>dP2ZM>2SAkik#6jClst xK7$&TnOVl^@+(uDkS!X7`MC#^wRfUF$^tIY-NI#D>3uDn;@2j~46O?|^$Z>`-FE;0 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/FrequentIssuesState.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/FrequentIssuesState.class new file mode 100644 index 0000000000000000000000000000000000000000..3b82910303fe20b390a2917be7e95eb1f1c621b5 GIT binary patch literal 1836 zcmbtUYflqF6g|^-msOx*r634WwG?6Hp{Q*z1tB(8NPv*|aoP^JWV>7UVc=hBlwc(B z2l%6mceabIQi$M}nL9h@o^xNbKYo7u4qy?5B$Aj`Fau3mkK{6|K*d}f^9o{^lgmOJ zj}^L^lh;q;SY(JVd%95i3lxoh*9 z&~&ruxsJAGi}#)|-Lm6&!r5}UD+&xsUAUs=mYPi>8tf#fS+>wNJeQmam)z3#h|seI z!}K|@Vr8Fy;F`hBJ#E>t48hI968UB}J=4`2Vn=uMsv%0IX_2~anIxG#!^PXzTDj4* zY$+cxd4rUPeT4(9jnURU!{Ee9pq^GPWpmf&6mjdcePA-AbCa#uJXbfgjiwamhU8tb z>crby(M_@LHLAkimSha6idEyr4!3oA4n9WQcRIzq+Lf(%CX-h2x>rTkC05i;-Cbe` z=O%X;7IK{o|I|O}#vvT2Trex%}fs^S@*tH>awVn{CIxXZA3#fnJx2?p(w z?kalG$1vXEW(&tp%F#9ht7Pv{+A06V{4tgECavAmsb^b;8&w3B+#K@ts;lFk!>GbeP2d`6^meu^q{1Sa?J5yEnh93j#s zO(RO+618-hDz$VX}avL{or?zgzaYBfBJWe#;V={9T%fK(6NmNs?1Oqete_sn|yvdHNQ@6duwZ Qq1za)lco4p64#LV1<5g!MgRZ+ literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/GetAlertingProfileArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/GetAlertingProfileArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..0f07c9b9508f72b849750b5da04cc6c3f9f136e6 GIT binary patch literal 1825 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 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/GetCredentialsArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/GetCredentialsArgs.class index 8291f9da33a8cd1ea88495d44838be5251b49cb7..7c04c126897942a30326500ce84a53eff1382ceb 100644 GIT binary patch literal 1800 zcmbVMdr#9)6#w0=dzC5=acm+FVd@x6?DTP-};l<~f?q zRl{ofo~yp#UfJO_Zh3}gx~opzU1pFht-%>G?Vh^raCO`F$cqrE9ivW6zC*C73t*+n zzILFgre@XE9nUeW`tl07X5aV}tig8;*QlC&)v|0)^9v@^51*=X91h&~uF ze^k$m>XvVs8qtw8=IVBn@{+tmA=3GYRwBM97BAEmy-A1pbXbLvX#!|-Re}w7KkRqONM25D-6;6#4f{pzMbHIh9taL zj>ca-9sd$#cC|_8!quUC_OG76^@AmAd{6UDkJ_0m>1NmodB^r0oj*6k2nNpY<&4-S zhORB{dat<{m#d%`eF-coc!H-2GU!u~6~`#R6o2g^gKY1eE-*tr-}Z2}tNUE{mOHL6iu4yy==UK})fAqzi0BBN zw*tK%w@G%>cNz@6E*S>`19j?RP$mRXCocwN15i@X;ts(EiFb~^7|CSeE7&(gJ_WJv z(iso#hcQID(!yXkNVt{g2;F5m@iY@bc-kqLX;S%9@5VkIouD!jRqK+!3pB;j*$>EU~TEX4A2ik^gN=Z0V#o|1e5=c z>{VNJDLf2DmPGzfYsSNHT_;FUIQa{@L@n(Rdnm>P-9=EqBuR;^aoi+L4zv_*Ap0Ao C?t`ZQ delta 700 zcmah`yG|QX5IwWr<$BkP4FSv>n^zKy;|*Y(A}J!JLV{34ibT00mStotWSq2aX{{|I zpZ{>Qk>eu$$KNn=P{cAY*Cu;nAvs&{u{JjtB zJN^&ftNHbc_odmW)+_IW8yRWeezMHEzgrH9k`1=yvs8j(DgLJ|eR3!3GLS-_!m^7M z6kSYWN>Br0pT}0cw9*`$j2^&19@kp9=$7$=gGG=gA z6B#r`#Na(sND&@E8B5Y?ok#S2Eus~rLd~@d6(u#*KKa4t$4jN`n>qcOPq_(oS?6t-+bLoG@V-n6cqt)`pFQjc)V?ui8a_gf9jNz6~*qni!Ks8w;-Vv=e77 z2Awv`UJh~O(ZR+5`a%PaEuHq!A0xCB+DoRpQ@askoHDc_R zh*2mrcZ;U{9gN&HGo8Aug`Ii+)`f5L%+GnIx(cF>K7tzys!~4%23XNBh#`7IDW(_* v3?ogebRBwiQM1xjl3FO)5*C-fo!tB(r(+~UjbbeH8anAs;*AK&9q4@rk{xQ= diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/GetCredentialsPlainArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/GetCredentialsPlainArgs.class index 458bace510b139499ff49eee85c245bc1b613663..a92aca2d98c6e79503e8ccc73e41a3702d3460df 100644 GIT binary patch literal 1737 zcmbtUZBG+H5Pr7rEvFUKVg&@GYAML^B8n+Np(?>37%?P%+_psFyq6Z2_OjdX$_z1^Hw8oA`Yzw&rp4`sxuslbH^`QMHt`lZ`D%_UOx`w|Yt5G9DuNgYaNlmombux|RNT@@R-8K7v+L3p8-BAY+}9dGr|s0Zwas0rzr)LzdMhcz^p7o_OSQxhEsk$9EEGFS{pZ%|P*$MHRZk}Oh>|$RkP6}GDKmA> zRQ{7TRTn$lw-hxswOF&l?qs$c->r#fQV(MAFB>+c*NUNMLwM?i(3A5F^rA0``v$#- z1p_(s8R*x?Fh&^4|Ir~0G0HG^4hRETTw)mR2z7-Q6zG|2_MY=j=m$d^7rc|-7L+05 z?3`>hL$TPgR-4sbQB&ovdyN@--Uj^_V#sTH(jvMyV7N?rmcFi#-s{oj)xb!-I&I8_ zM(W{dV}D>wX&781z&zp1(ibC{Dt!j~g2;ye`#PP8;C=`Lq#MUR7z`2{3Vd$RU9Kxm zv-`~pgF|J`7w=dnL4#XgQ^hdlYk_53>14$_d6hgX@ zz=vjVgv6UeB=rm!+Uc$a-nT;UIYdbV(%PF6O#L~s=N;9haXT1U3U_|BW-O%ZIYOG~ hGM~_+Yw2Xn5=W8lA{a-BWQ?o{TqG?MXlYzP{wD=qb;1Au literal 1586 zcmbtUe^1ju7=CVSbSuLlDmno{nK}ki0f{Cf7$j0DTtJZ?I>Tmt?Iv)HR33~4k>Y4?8-nk9I@`Yp5jV+F4bR3)@^&fuz25X)!H4;S45F^ zd7CO2j}m-H#8_LQ<8Wf7pt167qQdQtPQe|G-td})F4Uzfw!(Hp_-{0XVYKeq+}Y*6 z)Ou`8t9Ozr+dP#mZn`(2GtNLyVQ^KtQmruzlxKGto|KcFpZUZzl$B^98oh;hN_C#& z>`U=RQDy3!rCcy=wkh^_=qQ?XcGY&`>6klS=-c9j)aNttpT%9!i%846B?7f6^nnI> z6fk07DUW45%3~6@7^)YTi>8=jSUv|u9>ciAFqMG%B8b`wteSh^y%+lS(fal8Q*T=t zOmDBZ(+uTu;!15d_Jysgr!F}b>8&v7X-T1|(?=3bg!IdiJc=vyFOYr}4A%k@$H*{9 zN&(l&e1o(l(ir`-l`ml5korinChW$65I0HAcVjRfrRma7P#n#iJetRfc`}tF41794 zQcRF!ViFCWiorFaN)cvQgDZ1X$ycyG$t4VsbDZAE394i=A{*-hVlskanrfrh3%7A6 zrk##rsJCOJ-yR{Od!x6BzIp~AgpQtxqn9a*w&rv+6*72o6f=n~awtWk$l~sw5zNHt nhK^xSy6k7L(9Le#>~_R! zul3ps|A#tb#nBnZQAZu`^xA8^_FBjBd6NZCH`z>)o6U1h_B`+VJ74eq{LhzP6VdZz zCg=n$#^_3dBD5H%<8(Da*Jz2GFURpH_R%t}B=E;8+`P`J#A=n*4OVNcUS;(ftDCHD zv3i}=8?4@B^%kqQS-r!`V71Pw9HUB%ghtw!M(38wb~Rn|Os^`_m2Jy#9iuGL(yDoG zJ$+R=M$vZVhAbPdw5^hBxI)*cCnGKC<}`{fzhz#sblQyTNVklO6T{)g)f(OVH4 zhG)9SpvNe?@-Fhf@qk&`c0_vFb1^mgSagPc!{uoWWDZ*Rct^Ua0^R_BU^Lq4ao;P z0ktK{?lrNE?z&g48V*#{b4*OCR~JrmME5!$a*fVU{EvLG5fUZabIRg!Bj~ZV*U@R- z{s>wWb$8LOyGeSIp3>;-zVEdpJx))=Xd_9Rbeml!lQcy$F_KBzqC4D}PSPyR@B>O` zrL)Sg%CO3^%CgF_%CVYbHOFe6)jX>_t30a$s{&1HbYb5a@7^dH4g7ZpEU)vzXf)X9 z@?2@An_W0{haB;)Cmm6=Ek11;jjKDW`5LaapcxioSV>N~ur!L;8#p^{ZQ2jf=`4!S z3DiRj<|&67fyS!gc@nJxMWKiWQahxjzM{y@9g5zku20byp{MaYgg1!3r7rr8`ssTb zLo3-FL#Jp0E%uxA{YrQ*g1(VGzo{>%`x}bvP){4%AMpB*G)zA=Y=@geeOpd7g_Kb| zc{?BtPIwjXaDYVWGwPbUPqEZJw4#kvxwI4gLcR2>;+NR-OYk0p+iASjMBtt@dd{FH zg2{RozcCJY4uZozhbM>4`eEZK@brF8agN%YpdP$J^qUefz85hLi}Uy&wK9|-(L(S$ z2>wv~R05m{xTyrQ_}JMccp*qIOBe8GJA%F-!JkS*m0*@G!UEq4p#;emg1Np+! E7i28PHvj+t literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/JiraNotificationState.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/JiraNotificationState.class new file mode 100644 index 0000000000000000000000000000000000000000..4903e3686e612939d36f77e3220a7ee5aa86bd23 GIT binary patch literal 2944 zcmbtWZBrXn6n-`dc}FN!B&|{k0RnAV0j*X7%3Fmt4O);H$4^Ug!Hb*S%)WHwANUXa z2hKRYwYF>3I{pBEl;b&@Es5<-ro}JkoW1wC&w07$+~n_n{`d>PyZ9u7L6oyt#tK^> zu=tS0DvLE1>nt`{Y_hn?;-f6iV=IO2Ec&s<;#LZ`v$V6t+m#gVXh^O3(yR+dLw?(` zgtKlMt}9#(eVdJ@ccNjjQnMR+(>MKw)axgf;W+2&o$nCrS{GQka%|i)bkneo^flWyg<&nN z(AmOW-|}Qb>`PZ3m}1qkZ1PM2P~^quxQzC;zTIfr4!ciSMuR+G3_X0Mw=sIvH%)_B z36wUPa?k!!SQ@TAN88GzGsIobk=9WdVXiLRnj@PW6y+*i*B5&yP4bv(I`*M7$;y&- zENb3uL4{7aexqSHWW{~QB-g$xoK}p(rI}V8d{3JCPRMDPoWr_ZC!T?dv_#c!90+HR z1J^KAv1^98Z#a^_qs4^xg{1myD%r{}kY4)+_zpJC%yU{Mrb(8iCA}3&yEL<};d-ev zkQZz?KByI`h6hi(d6|NH>BcQa!$46r&lJZ0a+$7+L&G;cx}tQsW=2)X?%KXn6F0+# zxuBf4Ii3*>xvFrzJA%8w&0_?G6smdb;Nv{TP{?DP#RQ8{7DX15ET&jYvna863-cOo zoVj>Ru%Kc7r3vyF#_Jj`cN}zt8)on7cOz@nIimUug|EVYrh%r(K72a48cL;(mt*IE zr))_%M3|?y@I1YCJ}m%M7{*v!JmEL`Clo z8jnD9DcwO65r{6WJ7_cl(WQ0=6(bN`dUw!d1fr(s4w{NU)HK~e(-DZ8synC@f(EFv zBbXuBER}YFzBJP5*+@&nR^f_cM1B_jBLuW8@!@5ktF~zw03Bi<+4a^APai zfY340pYq|^D>M-SG}iF|an^|d3D$i9IUt=3kYt?-kYb$-*9 z@X(2Oq7=qL49)Ws^ndmkukbu;9VPfZL|>24i-?m2WEf3J4?H{me|A(XLw}F?$xh?F t({fKl?s88sNbb%(#1QA%>G2%-xIt?%ypJW)3EJ()Yh-0ZYmo9U{0kU#AZ-8u literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceFilterArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceFilterArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..923e0758b6a91d43378f6966ae8a9f19c4165260 GIT binary patch literal 2448 zcmb_eT~i!I6g@q=FzhfPBeH|^*s0kWoDVgR zzWF=+1zKf-rB#;C{wT|HXE)1a17$7i%XHt{eb2dl@9o?3_dmb?31AWT9h`z^<2?r! zyb4^*Id~uQB3`fXb7LF}Sai5>a~!vDTV@R#OE&H(sA+}yW-DrY`&p2+jkohS^wZdH zY0rfFS(0{)2~gUV6SE-*wL|q`*9fRcrEagM024rxJ%PrEV{N(8{E7h zhZx(@yM7j=;@WP0Sk69w4y_f%+S|xd#-=edI8DLJb4BYStU~qqm_6Qq7B_v2%~JD` z|E=$3sR_KMNz$d_zW+{XA+gJiWk#^FY4%tLSU((@%dFit(Oif#FnZ&Tn zKJ{b2t)*DQFiQQ@L?JVIA&=7cp5Ie?>sb&;UGmHiYJEW*GQX4ka0;LFsfJ0D!jJt9 z4+A$`_`j=tb>fN}j`{Y(ySR%F1ZB#_1-x!!#lP^ES30=~k+6=CH?fRJ>9XvHm7Av0jftxk?IGxr*N4C`2uOzk6xE-V2*F$DL$iQmGE*l$~iN{?^#N#C~*c%)(@cS zf57_U0Hr4=|3aOGm-wCF4)DD#W1jZc@iHa1V}n<4j*{R_b@4X2&!XpxQ}<*v#f0kDEG z9!uQp;5j`!N9u`aZ*Z-11kt=n%|&V~yoE~~Z6SP{6QP}^T4*;o3V5Z?^Nc-3<&aeZ z3N#Chl^$b-5SO`r$S9gC)Lf*Eg?I1+c nE(0SHrhb?&bC^y9M!LS1a5X1;7uWL9V)Pkh!nkyyim87A%{ZAw literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceFilterArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceFilterArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..e47c0473404a1225060e22c5eca691b97c224e24 GIT binary patch literal 1673 zcmb_cZBG+H5Pr6_TzeEMsK|@TTgA3iPQaHKDhU!zND3riNc_0HF1X}+*WB$H`QU%j zsKH3$5Aa7BXRp`vBp3qvk5Cv;Xxn*hRn-WTOBj3)NQY2wL>RtNvnD6a^-Vd zSki5WDzLV=bd_+qYl~OXQNmyM4}(>rJ%~Kw8B507o-eGOP*E&_a(nWS_(ESWh`+#U z^&|d{TcMJURhNOPC2<$aNr+loU89`iyP>OOOYF-)HXO0;x}M@ndM-&VCb=W2yti#_ zw%VSrWv5-;Es;o@R}4|s7qIDhpmS2U+WNt zk-BGdXP^60`|)C0y_KZw!?|pK^diyP|JyU&wf>rPrCMX?E0y;do|KZEy7&~Lq0oV> zNTbo{PTX^<>e9nij0cufwXY=OpHgO<;(&*aqBF_XY$xuDx#xv`bOY!dC(gYSi+YS1 z2DU|@wuC%YH^q*O1IOOgZLhErt6i(LYVQX{rfyklHdZfbrjLi>QSF literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceFilterFilterArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceFilterFilterArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..168d33c00235924c09ce5173b1cac6f629ca4b8a GIT binary patch literal 3354 zcmb_e?^7F96g@9MLqZA^Ds8Plu%$Hw=+pp@~$0!v&>c5$<-^0EJs z&e-DUjN@njD93ZNY4X@4bS9H8Z|}Q#d+t5w-gmSA{`cqK0J7Li;wt9jSV$s<`2b$thf#vmM)CQ0Pfd z?kMywyN8y-P~LW|^`N|Od0XawiJpn&VjB za>=YzEdH?AX<`#KL?$?w?i3^^g!&JyBQq%Z%%pF%Gt}u39#?zBmQckydXD)wi{$v^@(uEqK%hrxvvDpoqre~HdcGjZfxW4Jzu0y$RRx|&_FzZfZJt&o=eMn$C-At?- zsf{$lDkQ_oZ<$5rwQ#Z0fp3?Lyj}5Iswdh%e~sR+L+A$0LQTGUtgbZfa422_RAD0G zYN?7sF`7@ybKPLRliq7CaW{ZRTi`ZYhc}gDv1~eK(JHf@p1F=pxW0WEeG0jB$0@L* zk_9*Ls^ghK#xEGy_hcAwlC4`6f7Pw{DO|&Kg=~lOKZQ3i7Dpk4Eo=+ccnY^L5ywsn z-{4!>+)iNz6SCZnV^`eIWOF}-S#i(Gfvi~B(7Lbiu)}O#O;Cm5#?0H;Kei5hg)3E8 zwKGE(#UJ#n9|PO7)?G&?i^5%fsD#IOFQQ-+d`wGG8_)_d_ef#7B~0sA2sYSAP3DHe zopUXEK99!T!Uy~xzsj!!MwL3yx=fn|<$8m=CG^k&hBIeSnZFR*Jwwk6^!`R)3~zEB z0htsTYW6e&w#GnyP&80FTj+yoQ&o<0Yl>h<1mk zLJH!!OV9iC#E`}$pK%G8p&?5z`a~8xaNr4c$TpyIMq@!3>*7kC-5r z59<*>!gKCF=Dta$)Jt5B%Jf~^AfFII$z5+F(_oWKCS}^!@N}6tIEbdpG<#8@XWJHf zD9YeSi>S*qTPrkYR2v4vO$?67;0Fy)XTX6MVUWG3(Ali9}E&`fXz`?xMRr>u#@V zBz_dAji`#$AJ89Fb>@6Y47pGd_%ge<`|L9_&(7@q^Y34O18Cx24GwNNxQRuc-C}c_ z%^e3P(5&DG2Ng8gELHHMLpx30Uap`ePv#%jB>))hEAOw$P? zBIu z(uUW#aRf%!RcxOqE}GcI7*1F4lZzGHbuo$4E~eN_vzf&ufxDk68`E4CXdaWs#n(6` zaAD|pq~bK=*n67I_>rO7PalT&T7^0+e6iQP0*%Jd*Qg!TdZinFpJ&PykQ7vPF z1E5)fr6T)HI{y~qG@hjIGoU9erp<|TgCyJso%;|pnSn^+eb6DMsSHF{un#)KG@XKK z`1zP1{Y}V4lwvW&1#U%MOvH82ZSyVdX^8*Um=BeA$TnAqR3-u7bPCcyC@%!PZB+-no4v#E*7bJZjnN_QOBLs z;rM_wb4c`P(7n)~5ObK%T+gH!y4QE8Jb#NS->Vo3eJMp>$O42L+(a@hs*g4dpt!xuF+b7G`&t^iFPa04WO>!nS-w|@gMkh B??(Ut literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceGeneralPropertiesArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceGeneralPropertiesArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..57df7352671ca2f87e81e9aedecd0339ee85f683 GIT binary patch literal 3311 zcmb_eOH&+G6#nioVIFjVOd=%4$0U+443HKd%qWNfA|y%xGl(W}VKZ|>I@NTK-M1qw zTC|HAT|dB9~JWh_`s&$*}X{m%EDd(N48{Lc?R0m$LQ zBu-;0hBuRlU@C!rTux#dGrXKl(Bn!MPT{R2y_nb^|q7VmX~T6w(AsiMF^g=-Xvwd#=Do2f&M-FU_S;Q35B14i#17e_999BM9^zOzc*JmFI7SuCh1esvX!=B+Hg>ZAc~kY1j3X z#mT1JpRLf}G_5_SxfnVQR~4zam1$OYWc*Ui*aE#JJK*4jEmz%@$}S3wK0)SZJkODq zTS&dF)9~t^dEn9VP8W1ksDRoc~mdm~jf=UNP6_u^Pu{E9p0+%y~ zBSCeLEO?<`lyf%Eo(umq$1ZV4P=_zdKwb3$W#BBH5tuy8Y&38NPsgxo;C+0+fCC0D zB4gktZm~6JV2qbzY>l%u&Q^}C99wy|@)#7z$j!1WDp^XG>n)KU&*k*0d7UAf6 z`{^egptxKRWF04)%8Q=Q(rN}BWC6X|9f<6Yh}_&k$2OwhlP`kj=-Ev>03T5V=z+rX zv@)t^kj4wNV!VMGUV-*S$k)GzH~a|4b`jY@XA9W-wEYwGVY33;S3O#TB@kR7%Jffx z>y>CQ;T77$0g~AVhz@Tfmi>-a9TlqlHwE|%aeS`fCHL@>+yR6(M7ydI*pnsCFnJ;v z!6<#lIN&8RIIKxe4*NzeY$8i~;t!GFsMQ2@(iY$gEn;FXVuB!Er1ygRtc`+XlY%cv z!B-ldu7H}B&~yc3c!@k!1ur)$7{e>{vXz3aMg?DM5p@M)c$FXo&j(W6>JE%11>cZ@ zZ#6t!0Sy~M(-n*#xC4&VF73w~Nk7zr=%mMMX{S-vhIDrm>0KiIvxcXWrn%TaI@drt z*OqioBk5nXAUf$>jWkW&Hl%x-NdHQtf79@E(lo*wNaq_!=i8D#(MbAtEr?D!UnBh* zUZ-GO9-mU7b4$!~i}L3Ij8y6oPVVB=HjI65cj~FSw|n2)o9e53d)d2BBt_E#_=D!f ppVX^=(eV1aLaN%!^R=$)zy$4zV3L}azauzL-$|m>Pxd*S`4?jb`?ml9 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceGeneralPropertiesArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceGeneralPropertiesArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..5ce2b0e97a7e8400c3f081f46916e11714f1131d GIT binary patch literal 2423 zcmbtUjcyx75T5n#*)dI;mJm0kNom?TX_^Ddf1E&)rclXEP=g`?5@LPcq+6Zu%-tTs zFTnGFz$&5=55PkqzBymwi);5UI%#)qclMiazMa{B|NHwNBKnx_m1u%KD#QAOtxtLQ zjE6NI>Sa1d>qXiqlSS)1d|sq4%Gg=w?ad->2`X+y+HI*oQ02bosbJfcVW>hu`JHyh zbOmiR9KUUMA~$MlyVdoi38bTJ?R6p(+7G1mjPj)Cs4o?cOZV%*@2J3N6>bJc;hLa{ zmI|FfcZ~KuL9=N%#}Aaf7a2gov9zy`03QWP(8?IMdgHPDS=z4jj_iFCXzyrk14pY5 zBhTozI?$nRx@yz&d?Ps^5?Oo(N)EQ|`|XY&aP*uf+Xy@t2l&Mv_}IIV>q?-)X{x0| zHut-pd8CYX1l@iHzMoK<>6Y)iN_sI>D^Nd0I#8`Fu24XpFzR#y6^5}qIn(Wc#Y}Cf zpJ-&XYwyL{Ntan}`z`EGHngX9qjpmT-!LCR(+%H|?tu(6|0jz%^GHL1yCc!+FG2i7 zVitMlwP6PNGtMR8q-yGP5v-2gObdF#OHiS%J#97wWot_Zf;MYu>{qW>#t@6>i{^1( ze07@9D?=_O9fr(*JuA60<(491wbY@ET!Z4U>W-TzSl;)ez)|-!7u59^we~7^BI+Ilk9ilF*guqt$(rUhM1 zVW1Ub6+-)AV(~kM28$n_Q~fBY>>nP#4uWd6)Z?_*e5@R^HnNTBJv_hX(EbIe0|Kxz ztQ^KSV|#|)!aRxpS;FHMV)IhG0Yy)oE)P4+B~DQM#Ho)o1(aE=0jWxFe@9nf<4VSR z%^!Q=&c=H!^u5YJzd%>v_YO$Dk3WIgTK<#7UzGVRCVmZLAzq)SMc9?T4_%M5?`M4j zYjY!UvLkR-$Ku=sPL*m29~*znCl5ZkVKVC}ko+k!OE@$?5+pwi(s(Y&!bp(9Fv$1M z0m*RJfDg+%NaqO^f5$?G2HO5G0)!8*B!|23&fv`LWgK3A0W{Zq3}&3e2G?L?wrFy?1K_{ zO4heesKi=`R2n+=em5a~hqADUO6(2d$5aqLOa`zYuLbcsrg=CMpv&xT?897;9$e(%CAQ|-O0u=U)*EasvbDt4 zo9(#F7;pLUwjb~KaYaD%37nozTRCmj&AK^5%dDBYW9wyFdb>?W?ClG zD>CC|<*2=!j|;So7^dMQ1X`j4ivq1pw4PnmZG*=p zXREVfia6NK({x8Ypa`Cyjtg-5!Jtyl8$?I z7Al;eGzOB!GA#(#Ch4EmlfFaInoVHuylXl}PA(dGgBIFF-PUu`k@l!*T8{1*mPr-u znZBvt*6(V1*{RLC*(|S2lKY`YVxx&`R>=5HR8L@U&N7`9@AAE_LMw}G+a;W-#4azH zFFZN?KVmeS-}@ehTd8twwaxOFP>azx4S}#ly-Dp-S5)L?N-*aEF4y=|PX>29K(mSc zz(a2>7AelB+=M6;>7=OMV2l~z-0votQK zm1vlSz^)V@2?fqX8)8JOKbW*!J1r*+K7AgpbAUa;8;1^ivoh~YT6rggLwHi))HZ9% z%Or#YIOxaK5U$}m5;!6dm3LQV+L4*a z>gMq!($6iRKjK)Cl#G~`dEBG}3&%>+$xxxIY;%FQ@?a~)U>%!>QQByayUJYZCK003 zM8V}cMpi4j=r9$w<-4w7%UR3hLzKW#wG$Ml(Yd%1j7sFQZctOJIa?vFD57`hNMD7d zcuMWBMmU_Lub*!EtfIJFDzf&FP4%X04~@>Fg)E>mwgD0Q5x&bCXjw<=x8(ETFkQnm z18~ub+vva@JVm2W@f|#kXKBQEy(PRP&GV7(KpAiFA$C22Zv$;LVAp8+dqnX40&I8j z)eV`OmH<85`^H6Lp7_l zio#V2ekKLKD0r#@YF~t=Dj3E~@Kb458f&_IJRxpO~64Vqa;my*+ zo0tC{Al%jU5Klb9zIBAz^BBCioByKj@OL3VamV(Q_Erln6n5YQUM<{xh|oPq@cXI8 H&*0F%k)sQV literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..70e3788d101e0b35739939b8b81ac6bd208c0dd3 GIT binary patch literal 3067 zcmcImeN!7n9DX*hmk@!rh)|%kC2F9QlVY`+NMF)c(LiRv!O^lT|HUd_O&Y#AR$8iG!yEaK|cGtH&qb2tZ*Ek@1 zEz9;a&#*1>x)>D+Y}ES8>Q<|5J8W;t(pqHdTLb`~OR`9wY7vro7`e1!Hxj3C>g# zVaXl8bs(LuIjaJfYqqYL`3@^~Zi>Du!ivn*zzw^1i^mQq-%{R7FtB zyj2wGHa|GI&F{xUa9XBf_#BXB-Z@PD|nY+?~#dj=u1$qto#n~2NJ&oX1`Bu zCYZm85{(O843-1myFRbb+}u!}OgRx>>$Z~s)H2w=?-~IeWrs8?QN0ZCzl5>0=Z_z-tPGp+|1DwH=+zI}}x$5cezFaz{QA$kKz8UZ;*li~Tn z6xb23bM$AShm(<4az876xSN!gK=s z+I&vwa5@jeM6caDtv$<|UwLOyj~}2M_6s9&A*zlg@;p})TU1-2Bx62)&6uMhPuT50 zd(q-xd9Fgplye^d6uF+A3g4zR##2kzZ745P}}l1rCc z=~?|X&5dC!3Wb4i;}Bhh!;=3J3dyU!SEV^ITq;!h-=rJxix5M~-(FDaWrAS1g4r0#iA!Tn zIjw$gVT@ZJ@XaR-E8n|Ob9`hk8m-DcWv6zYkg^KFKaHq6#?QrmrBRApy-L-k+)d#O N{hK6Vl=|P}^k-dbcZ&c3 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..6059b15d2ef5cea041a51d2faf53d1f26bfb17e6 GIT binary patch literal 2067 zcmcIl?M@Rx6g|@xwk?$+0=9@BNR?8Q718)ZLc)g{3}8|aqyLue2t)Rx&hBb>4WC4# zghUb_z=ty4*)Hu;X<{h$$IR@Vd(S=R&YkJ6-#>l=c!I|nXt=M2nJlu;3`5%9`ogdOffLTj;d|$MB_L za$Pv}!1wfZLpVNn49Db~<{qyF7GE)hbx`GIASEaBqTKbKGUR2`QZ<}i&QOR0o37;g ztH38va?WguT}l*4ai!VBk>l?ms9jZww zo-?Fuw6^tCyY5OwKjj!UF;7eWArO++l5{YPA**2D2&d+LV%Yl&s-eDHSzFBZpE5r$grS1`PxP*R&@feciURVH6uSP4?B$%alIZLla5=9k5tAtWW8ZMAlsA#;Z7)kDrYM7QSlcwFn&p^?()Arfqjc$S$S580jCsmYAzK2| TxJPq}c2lGa)IDmYp%2ABCh;Gl literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..1dc63892f19db0a6d8b4a94c62b92873366edaec GIT binary patch literal 2431 zcmcIlTXPdP6#itJY`iRqF%Y0YF>N3l=dy%L2{>GGDbs=p(;70v@FcHASZ1?pWG&PD zg#Md$1_%Q)4A1;1rbph5BNFGO<2L!<7;8(upJla0V@ zZAM&4?h7x7+KK9Tk9ZI%5%I_u4gaNRC81d1LAd#+@DnKonT;Ng*2SV+@6;HE7J?{H zM3HwV*BA=RaZ50a)`Li_CL2v5pYUc#mU2DzdAP=9pvRf9pk4+Y25Tt^!j_N>&hJqq z442H>PTlAt*$qY&k&9n2O!xIR!ZPwh zYv%j78`#;=??Xo~Pl;YFfOz%pQqQ736%e&!G+IKQdO)eV1y=op+_Np@-=Xj?*>X5Z z?Fe}Q9tyaOQNlY#BPU&h(>O~bjdw1?Ymi@#Y$tnoQy*~X3vyc+>H~X~+^><4>s{Ef zbZG`lAo!6a(`%`VkLI-CC-m0@cJ(a^Q}19^|DjR7D^Cy`=@PY?>2}6ctWpTW?@`o5X-?iv0ZqfG*5>vFBiJnB2$h2rbD~&mwY5l#0Rdzn$ z$QO+0y!Whjd34*_-IX26w00g4+(S&G-la|xKbPezkEw1}r!mw0=WvGpHc2Q^?tZ}O F{{Y~|cMbpm literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..a6cb776417b57e575848724fffc58f0e665b0130 GIT binary patch literal 1832 zcmcIlZBNud5T5N7dUu?F2zY=Z$ccByOGQ4I2q8hxgyg`;=_Q!>VQJT6O}jm}TNC~j zMhS@|{s4cJakf{Wyqq7*`DJ&yGxI#p%xv3VzkmD$fM>9r0}JN#GM|S$ELgCZ2NM?b zVq5SekDdkXUb5gR0qaG?J(o!Wg)JeN-0)}^vXDT}OTVQK3Dj#&;M=Xpi+paohk`0e z9cFXUid1NCQ!W$}R5+~e956TX*e2!P;VyF`DH$H8EGn98T{goNq-Db0q>2$JrtzIX zGW&I;5F3MXb>2k2NMhK0hp^S!C;Elj9%9>dCAny>tYPZdZX^`2v>LYPhvdVTuR#g2#_3hiCxf~z$GnR2B;pixc>>e9G0Fe%~C z_RsFhhs!d%!&6GGBKH31zm(Da)}$n7UG|Yip28t!R~;{zO1>UM(qXT-9{lrvdRrFt z1t-wA!$P&q^gRj-FaU!EDC*?_OcB`Y`a617nI@Pf@TTho1-J$M1g2BKl7(@%LVGu{ z^w$EG@MD$7moEcjItML7*N^M%*dBsAxDNt>VLTfN(K-4a?xKwi>Ks*UM_HIRfXD`n zBZ`er1oximcOXYG`~GsL%YxpfcvqOwuDJME8YlVTm_l<3y7hoiBOl7oIvL5 z6(y55fav7uB>5edV_?om6_cxTSj#aGy&K11T!0PXKLL=@#KZzT#Qx31z@zQtq(p>4 zUq3?U&|gX@rs5cY>?xRgC(xtoByiEJ**N-961|Mm(|yh9XcX0ZwJnuYMLC#_dz*#F s=k1tD==x5&;9Ct@vfXwVbV|1^+YO{^xeZxsJeJMSk=HESIk+zyq3=tockGsY zV7pE4r*(g?Qx=$7v0Xb@6Nu*)cLfrgUQ-IpRBTsP!&Y7TJ67GHCR6bmma}X5wpvHZ zMDW<|2qZT`+i6N)z}$9S>2Eq#rz5$sd!%gVBR6DyFL$KKWfgj=DIZy(6R3cs+f?5Tj&|JrkzpJR2^+yZxV zM@xrgFlt`tH{=al4cMjsJG>WEY1y__*$HlXoxsFtoDtAF;gv546K`TJi5n)ia8o(R zn)nd&Cbn@)N#{%y)Uu$YqLPX@Cs2?-w`C)c&1~E9t(FX=pIwM%Y9SkV*}BZSp1b6R zj-#NzVry&nn%49JOXIKxr5Z*PD2}u5mvhv7NAvs2>FQ6h!0d~;yHnq1E(A_=RbgN| zrJjlx&9pCn2yI_hJ-5nS2%Oi)pl8OLW*CgU6Z0N1*0I)FL|P_!W_gUch8^FYTaSB0{-)UN?*D--*%-{;% z=F04y!8>@LD}|Sh@M^S+QFnTPS9peF&k;Ms)EL+@%~wckwF^7fI~u_f1RrpZ@26^5 z?kU1M{8tW){1YS!Pm#?3##OvaRXxp$sm4iu4+zn(uIgLuK@-*F4N`+>H8#I)9`fCyi?>IQ$cS-g7Xe%mz9HnlPe9Xa9%@V_V{5MGMB;|K;_CJ?6i@*Q? literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceTimeWindowArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceTimeWindowArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..7b27bba7eccbdacdb5d7b76bcdddbbd9fc9ada10 GIT binary patch literal 1932 zcmb_dYfscb6uq+#w)+qe5m^xBu?Q?kK}0`5NDwt40gOOU`8IS%7}K5NwAJv3{H#$z zB8fl1A7wn#?aK045(8gmZtt8q_uMnn_V=Hkzli85J;{1o(ykmR z9%$|eTdMsq@aW0s3#2z?RlJd^;(cD!yZ#(13RN*l zM%|6nj;DqFDhxmiPn`i=?U-`g4aogo;*WL)URJ(Hv*jiiB}8g zEGp#%JdmD3Q>AlM{AAf)uI_utcBGbp*J~HG3r?H9PVy$EzNVBOa*%qGAEldHtD%#UMd+ZFiMV& zZ83U1+9>Gihh{ig2}ie6zbtQ0E4*@vQhW_z{+H_(f303L2(>EWJrCUg2WHJXZhQi{ z4KLJ=cqz>x&;IZGF=?(eqx_oigH>U!i(jC2x>=y28G6hxK!c1nuk)>}H)Xho7+tGj z1!|=>Mgt9cweTa4e0x2P%%_2-@lnd-O-rFy>_L<;tz+zn;#<^-xt$o@My|_8cxRis z5yPA2sA3%j^O~c2YA6fr?bHk0UDUGi#4xAJKZt#eMD$^7iISak4{@Oep!<>Fn$Uja ziWib3&XV+AO44&7N%Abo;3Xspb6ue4bUR0s`gW$B;R{I2=An2qhbIZ_=__M%c^rlu z5;Jq+kP>E29#Zmzv%7G%|}8H&s0kI6#0?03qU dUK%U5qDC3H1iF~OoWg3FZXn71 z8%5o2`i*wS1_(|O*onx5Or?`VeQa!a#xUe*tJ%`^FqZMlc$@jll*$Klj* z$Emjp3}efNWw@&h(ahWfhS<7Y;|vo;!{Q~cQRPlWtD0m<6>VKJA83vt+8txeJv3Sj z@iosdYusT_w=Ii1>!#Lfaq1|AqH?AKPinU_p&%B-R1-CRpn0ZCI+dDsynEn>h~aR6 zL$@8C-}PLIYhf-Fa%no3Wk8vUVR|s$$IWic=SPfLE*@z=Yk5<%>iKP2{W^CFs}!x~Vx@gS*^G&-Sn3*|ck?t2}Ml*1YAJra&*#ttcs$wgAJ;Ah@9ue;9Lw zi2e>gJ>bkaA|lp(05DAUuk79G5ru={f^YI%!_2o$^gJ1N_)nhU@RDtnC>9LY<$JX4 zMvs$WFiMw*eZX)d&^tJiH0D--yM$eK9mA>z(cvR{wqB&SFY$_`pjwjZlxkF7q1GCr zR0AfnCt%sOfs%cUSndhp**~Zi z^`(kuyqHn~>k^*Q!&AgAAhZw3t33r_xlWc@vP6*andYbzOe-CxWR|9o_zOuv)Q-s* zxd59INwP|yO%|QQ4YIUF&-+XZR0fGYKP-Ar zB9TSskS7QxPJ$7l)l;G?B>KLDCySnH~{l>89hZ2b_dJ&%x z1jDEJtONC^lh2zXJ;d)Z;;Hecn0SFnkt{u{lDg2f`l;0RRa2?1RTY-LkQ8Mq@Ezsj p_Z0jeD9e8IMYZ#2v$OnB`jaV=vL;rgFV|f0 zOertmf%Fs#D*wU754Y{v+P0^Sd`9salr1fGLa9YH4Qm;r4&A6{393MNfAG~ym`bi6 z%dkW1BB{tfQ(eK7_FAf{_ny&KQYPWx$>moXDh=hH;gJ?{#<6Ly3O_pLq!J5ZZB6JE z4)Ymx&3O)YSGktvIbO^Jn-XusZpql{-R}J5#7SGUmE-Pz)I7rGwkfG(@RU({cx08) z>~PZbW3^KB1`QW0<6B=l_|{+jUe~dy%kk}jF8FX-$(~BhiNvg`Sm&V|py{kB$Bi8> zEPJ7L#EdkJI`*&E*tofN7_~15KbRM$)%_xM(zzm)%+PCw8+4P=sTN^4hZwy$X_uR3 zDAHN#U^I~6(!!6t@a?5IGC;b6e?&VjzYJ=_8AK^lD#orTK2H}gcM_wESnKu?UV2NH z5yOiHs;3!MIzYj!2I@*Ps<)1^z}`uHz+HuwjVFdVTlqrlW0b@-jBU|kH}xYf)&VpS zC0tMRI@U@@lBAkR`dX3X zGkp~tu8hKvJz{1~?NQ3i={-sxl6K?oPc(v;S%F8Ru=^HWp|MD$yG|5)21*)+d-xFp zUy0@VBMg!Cjk0g{sm;{P=+OP!5qdO6Pf!{WQQn}DV6NGsi9~gIq++_uLOKW5490Tp l-^hYo{xcO!ElI^rXpCbmg|@hjIfLCSok3KHA`5kvegX3>S`YvL literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..551b6225f9932d68e6e053af984b10aa041cb8f5 GIT binary patch literal 2451 zcmcIlTXPdP6#itJY`km}V<21##Xuk%=dy%L2{_Ou0fvhSGnnfzJgnCuS!Sa(vX+wH z&_C180Abph4$u8j9ge&kBNFF@sUKD=9UXn&caDyvfB*aI9{`te)5bo`TJUV-Fk3_k z=WNX3ydGXCQgd-HMsUfdiJ$fGvhK|f*?CYO)=W<-{9Jr4Zni7!Jv&Wr`M7Iqk{r6i16TrxO! zgy3>H@;e<)6E6oLdOTwz@z2~r5Y%)chFkoVpF~QB$3^RguP6z>eZv>Tl6wylMLSTN z9E1=f(!(acNz5?z?apkpw{~ZGmo*FZ*Zy1Ii>L~`hLWLJtzD;N78~Izl~p1s(BF3p zwC~zM2mi+1sd&(w<(-t2qK@*VN^4?YN^H9Kb<_#sF>;2W9NH@QZ_Av8Z{DJ2-)p4wkU2dld(+9=fP7O!0SZ9w^?b zw0-HXbH!z4B0Fdk6%|*Sydq*TBa$f6fH$bn4b8?8V3_HL)!VA=Xbdk5p#SSC-8!ob zrLU*!LGv}m$gr<#N>mtmsflit5y{^qq2w#ESfLmh&YD%8y3w_=9gONC7r$bd?(1y? zW@L!g%=d9Ou(NBR4;{TmC3?vK;??_0J&XEOMAVMaXbE}h0j26DSoLq@o^K-m0fj%w zmct=xN5}*4P{28i65e4NIq4c4!7&OgZy%2JJiFQ`h-27k=w*jAJ_}zevyP+ z>cWntOEXvk!A~TaUQk_rG^YhWqQ54vtM5^m`T(o?2aWPwsrq#W=0WeUfoJ#dY+cZV zc8a{x5VYkqS;ond!XGqY`f|M~d~0G`2e4lJ0{%X}X4uwcPr9!yx! zi*3P^JbD(id&z>Q1gz%~_gp3k6gGrla^0h0$U*`=Fa4G}Ah1(+0^e>$UgUGzJrGn$ z>M)y&R-{6ElX9V$pu%AdXP>!|$2J3@_Pv8`=0s95bfhdQnruxr!xbcE!hJy%BT!5; zIDusL>qsFw2IU&OiHwoNu=x&QwfblJmD(O++YKeTXs)bc>ezN96!+OK5BZ+Q)`SQY zRXh+_Tj>fEJ$Kt1ek+ig-4xVE;;dv}A}*Pm!3Gl)6)GxKTl;vqas}&5y}2H^m_JbG zf^9|q9+Ph*4;VB zB^=w{>3#WlQRq!Em68jI{XgtdDcxvLN_N&|pJ?PM9A>uWc*%6~jUbW^d&TtysQu@A zv#75+fxayks!gVER9Juk7%V_hFArdfz=tlpucy^%ifICkE>INU7W5OCPC-i+#ytz| z?ZndG4p_pER~}!*42Cr>BIJ6Mi^IU`j}uFhdCM?my$9D#8THiZ8OKt>Z23-A#8HxmPowv&?* z5e9wz2%STJDWRB(V*s)zV7@zs9$hDa^JdM)(T|eoWt^VwYfeX_sNTzMsiZ2(!ED^y uEIdAI$4o-kcLEmDWq&|U*O6xIM~*U{8Bl>L?k0LotPAk=Xv=~=82bx-oy|u8 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..409655c890d52be1c2ea276fbe4808ac68a84dd7 GIT binary patch literal 2689 zcmcIlU2hXd6g^{`*j~0tFf>3vT}X*zJGiAE33U=kQV5~ORB;sALMyH9Az8GZb=SLX z^U&A+o>qbe6$$a&A64~U@7fIhctA1_UeDaQbMCo!&Yk)9zki+sSVqOb8C*%?GXpVP zN#is=H}D0%n4Le8tl;k5+lK#-sHVuCf31BsNmmOkpdDuameTAm#~>2?ZYI_{X>$NA7)tc{{mbvTrb4W;hxZrsG?lA0B?nCk_1IDyq?mI?G&O zH#ccQbQng>4ZMcDX>+qJzkVxU<|8HnS7pb)<#v1%XK_xTI@t@u#M_ul;--mh+~N>f z6BjUVVh6W*bkRhCrv)Arc~rzjfr9+4EgQaUX4{r$wWKe->_XIE3t8XI)@4??YDoo- z!_eQ5$Ti}c`~{XqVf7De5KW*s%D;E0!|wZ9+zH&Uy^a=`ec6L|>yM}!0;jsBz_*=J zXrgOp+LJ#AwkNBus!}xsF6j*sy3xHe2u2EuxeqDZk=|NPS}keM$_RH2JGv}Jgu|!w zSe>C4kK(c>Xq2WgX^y_QJcFBn&^{)wFa@?;BFh37?ma86aI8AYB|w`mI6I_p~57 z>0(5B3707tlm0!@^ES(ae~*#OOh3iU3(T@u`c@-zs%Py=DfBfnnV!{T%S$2|QYvtt r^!R`-%O9z6e(I76b+jEFe;lQ*NIs#)W3j~W0sR|9?lg_x$NB#OhiH|A literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..2e767795ad242b341ce52339a4f87bbc0b102f7d GIT binary patch literal 1948 zcmb_dT~8B16ur|Ax-AtD5h;lBDWxC_qVfPCL81u>prHgKZ^L#hW45z6yQ|?Z`J_=o zB8fl1A7wnV-Aef=iAi5(?#`S!_ndoYcYpu+`HP5_=y{ebdTfR{GuS!mr1=aj`zUn7nzSp& ziU*oI!j|eN419ZwOBD#kl_Sc|p{Rte*z#0x=pOF~C)8SCV^`M1Td6AE=QUmRmyuJb zidked&`j=lTG+3{0K@=g%d(1Op$2TW1#D&W1OLQrm#eB>4zyI&a zfh*RO@&X=6Pr=s26)JwdZEw_$JZ-Y46gT=TEk1@)i%Jp&W)S5ETnBaSmPxViDZmDc z(^qK!8A+{s6=1qIr4rj=?Lg>V4poeLH$8{Ddt6KN951GVLkXF4Eg4&Q?pTpZ2CIyc z#pyjpPoV1_|6jM5mRz4pGL4P%CVoY8iB z+4Iyz-Hb+?Shet@O8NFq9GMRVE#M>7iT5rAzc_;^VeDhi~Kf39btr z!CK*3lEh__p&LmCuO&%dCK`Y!mVh)eThdFAJz?tC^4wq(7 zkP~8NPMlD}%*hih5s)w&FP12({-AIHX zvd$>|?vy%=X9i@W`g0L_Dn>6-5)o0>pdm1GxkL+1?y`_%ZkGjFjna(A={nEILb~jC e${8=s8M~09gtY`*%wkSqH%+$?<)X-f&%$312FXAG literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleOnceRecurrenceArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleOnceRecurrenceArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..c49539d5eb522f20ebd12857839a23fab3882eff GIT binary patch literal 2559 zcmb_dYi|=r6g^{`*j~0tFf>4)22$eK4sPj#P$z*TO+vtRBpgw-g;r~O2#eOc?s~Us zKJ-7e5;UllDn9o|Rh+TcX7EF*ntbs3&YipGo_puq*?<21^KSq*P%&^0*OU0vKn&N@ zIE&8=e2y>F@s%2SOE6Q3`)>;a;RQ&BE)>GI>VKa%ZlGqXu^8%Zd zhSw^!Lnmz6rRJe)1-{jgCEIO>L8tV!WxIiNEw>?SjVH1hI&zQpec1?oU(#Cl4?1Om zsTJF`gEfJ8Zt;OYV$*9%ftiZ!%4*oEOMl<0JM?5KUc+)8SiY^+kuwoIu{#3EjnH>j@9W%ZrnRQ#rX)ERJU`-hbyZhQ%(8U3Y|bvmu_?4Zm~f5271HuWoa)A z*vsf?{jg&J1do^*3VYSvD|}FE%0skpuEOLrEB&9u^$8W8Xd5Qh&^i@;liKnb8C+zY|z~&^y&sz{CB{bJ>Ygb)`~)t=tK4V3&=W7y1pk zZL9If|EGDorjCpHtIAGr$Lj`mqPu#M_ulV%x+H?kLo(iOZNbv5ULPx?-ZB zmIY-Ml~u$Qfr9*{EgOMsX4{r;wPYau>_RjV3)#TS)@9c9+$A@390h%k8r8UJ>J?ZT zhc!5fVKjl_xcL5QjfU@PdH>&K*PlUw+1FFESAWU|2%PD97sktB7>v@0d5>A(*l4W`t$loFc}%#59gX*xbohjyigWzlFt3sUtu$>a zi_eQ(Z6Hnyn9UzSYDsj` zg@`m~pGA)Av^hfhK1tU!Je@Qzk|EN?A=1T(q~97Q{f(AHCtZw4FX0-KDbl}2dfrj; zP`_tLW~N_Y<|Ss8SO#7rbEfa@N~srXW-@)RsXVWVWT;f&d+PBa@5e_RoFBTRdOF&P bjz5l4S0o>E@RV3$_<;Wg$(^PBJ}$ljPa|Hy literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleOnceRecurrenceArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleOnceRecurrenceArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..11db64a69770ca4b5ac9d2bb958a0fd9f332dbdb GIT binary patch literal 1844 zcmb_dYfscb6uq+#w)+qe5!pqQr@(?+5FZ~PBuFG7;gPU}M7|B(5yo_#}XrcxpO;n=G=47OxvHozW*SiSM)MV7CkkgVuGEcJk4fkE=Osa zHQ`x?=5tt?HOtR4^ny|5btv7M(2NReN(sH@W_EG4Db!pd* z6%RCbge}!k82I)Emnsm7D@RnFLs1J|v4wnFIHA@8*|I+H7f?p1+K#LXM*XdPj;Dpa z6$an}C|i{W;14xmGi_jt>+ktTZo6C^*wsKwb+E96t;Ow71>oP6zT9`kvQl2a1L-Mr zGIoWEpD){M^&?N4>M6yIK1+)aq12+5gr^Lm{DAAAq1`ei_B;hxX>#fc?Vmro;qETi(mcnLso+pTW~D7-o1QxsrINuCqvYh&E~C}SRzd%G zQih0);k@>n*J9(MtbgMji*Ffh{`6mD-oDiqNmfm~xP?dy zKeE8Lx8uyb%`}IPM;_8u_wy!Q7^`BVssyKeLm6$d(@8{F0@A#n<&`S z9#v|fEU^{1%8NaF~6ro9 zbiWdzCt~zGC6N(j4H^P7mo1uW=`IUN=5|?-)wE_bE|)(e3+1w3DQ9|Vt=NegWy~ee T#SF$2R?~C`SuV;f^jZ83Eq9%8 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..eb322b5b171c8e7b455cb03cc8aff68cc236960c GIT binary patch literal 3695 zcmcInYf~Fl7=BKmB-yS&(@I;f(P9Y+5VT$@0cweDs030;Y^NW*EXg6=y6ncyuF5$6 z6~Figbfy)ij!r-Oqa5EiH%^kxj6=5{I63FtbDrlp?|IIJfBt>?H-L{&(QpAPQRFm4 zuoB04tZG=pIyY~`srck9rg2lF4;$RfbL~^E-QwEq7z*5fGm1Mgd=|r26vZgE1;nht ztzy+V$Tob-KQObkL)-9Nqbjqe-SE9;cH1y*PuhlEmF4O~S@SJoz z%VwR7;k&ecKaHAL;MlMyYovx1hRu-}rXVA`J;U!(b|?|{$Q(ZBhC10=EvDA~;#K%- zbmm_OW7v89wNL+Pj+&s%gsrloE^AmK1vJk*koQfy=KLUFsvOFeT~*_!;jZ*ZdagO{ z%lZo?3wtSk>60EpKEf7Q3VFQ*&g}6GC{Rd+qLoe!t?c-2Ro*uF@?H3!_xTcE19Z3T z$fmdHG(8;`aY-QmoaYRiQpd}fiDE}b33nMcspDi8VHT)Uzp!_5rWmbtc!D*}u1 z$A+wWvX*QZu5lne=_coT_w8KLbCP>9X*>3!?OPUum+Agf^eWC5xE6#qaKaB_3M>VU zI@#C51GW_Y)7Y2u)xGHjrcdtX(%vIVhQPU2$oEVu+YZqyWYU%2`KBv(9D9dSA#hc_ zGuz$h5i$ryR*5+KWRbw$%0!ez(wOT3-4*Q4BO-tf@6yxs0=;jEmn}iHIMvB#R9>dm z2F9ocOs9_^(tjfI;0R++F#bEmB6x+$N$LT7jB%`B3OT$=ExkPkui;HX#OW#;5a#lFCnYo>B~X1yAeYX}kvr?H%gXo&ra%Qe=)I5u{p7^Heg^T8Al~rYXe!K%9x% zIhmj?KtUmi_ekOdnWpc8Hy8B}60Hr1-XhUO1y2=CJC)E>(HSgIq%C@}#k53akm$36 zqVFmss^|=|1R?kw7$I685?vwDUnqF0XgX8~O%=UNX6%Z7uf=qY${^7%4T^rCkf@@U z@jgKae1H!-P(OG4Twr_f-(y4*lgF5PhG{lSFRCTZb)zjSwfpLcL^rB)4r(8HpP+_o=vCqn`$#xh!Fb|8&aHV9pzAP*D0)cp$9&YZbO#;0^ zOv92)-*g?sQ)wk$K@L|k0+Sum77Op`N2;4tRP>S~xu`5G;n8f-6%MbmZEo{jlPwEj zIn?2nKsC8@P_((NuT^W7RO}H!t4OR#_QB6%jC8Uo1;W;^RlwYZ&vG~7r*Rt^1XcmNLxyt!m6syjQCpdd#HtXu(P z3a&#pf#Cp@WVUC7trz`Bal;J$6q5MCi=Z+*gHcEc#j(eWZ^A8{(?H-hu4QZt@4SOv zjM0fkR$psY_B0EvYGe(xX7$&zG(=CsAm-ggE*+l;&e8mLAYZ&9?%~+wEoNW{<5WEX zhP{I8h2F=tY+H~}E689+kP!swZwnG`1<7>;$)ONz4um=@=NKYiTjY$k0a1rX{lgTY zLU?8{kB9RUXvh%|HHVHMq~`Dugqxrl{M`eL<7MX2qY1Qo5(eOrN0O-n`JN#pjG=q@ z@5TJQPdDV{0B9!=eR~XDN;83``_o?bgr7YNVT=IcDjN%owOTYAP#4EiRCj4u&Z#vc oK3(zzG^C4vgM`u&WK1K+6t0D^Ev9jf;BFMIVU+M94RvP!0J&OIApigX literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..7a599dddeb827b8b92f216a364d17270538192a4 GIT binary patch literal 2441 zcmcIlU31e$6g_L3C>CmBOdCF0TDJtEI3FVAE3E@<63P@XVFqWy(CLdTFF{n1Tv=k8 zzre4dGte;YOo!+Gs7}vXidhoprGp=|+P!=CoOAEq-Tmj^KmP`B9Y2^jfkgw3i2@eO zsNj-`C48-hm&xYR9-O!UQ@2TvhfqW$8FTw6Z>7{WjY1evgxGh)X?OsD* zY{d`#gd9bCc1xhN9(AO^WYZ7jM!M6M@uu4jXsI?M&keTR*jMA+SW2GyJpp4a^@EO# z1*|(^DC70O?e!!lejb75>70z(AK4?oZ>ThkcjOZ{4H6Zc3_G{ngeiFb9-SA((s__3 zOn+l`1Uj@hPwVhHufWv%+p^o;-Q7^IZF+LG^_~CC63ssyn@STP4v8rg!S@;59T3Exn>eVdRYG|V-FeiWO zN-vR}TGx%;9hu0uHj^K*nOYLn+Oif#;X;@Ofdah68rLLi)i1Cx3~R7Y2hjw6(ttkD z4Z43y1uE~()r0mkhA42NZ%PwCa559GlZjaVn)y5}1U&!;C0xQJ@lJDOWovK-pK+w{&gFP5`W0w9HNcyDgJW+|*u&Tm*voXk zLLpcCuv6L69F`#XoRax&s_NsM61>U3A~5T(P?~!UqyCbkVqdCylYwRM_0{mq0iLPq znP^|pD+@tc&eJkYO92=9Oc&WIrW-j^xy}&A|3Fz0WjPt6i*iu8$V8V1BxOR*a9*f` zLjPf+%|oJBDSA!A(?#>t5lt6u9}sQhDAC6cioUIp=%Vdh^epNmQ=+}RG?rAR)%OZU z)p~=E-eN-KePA`Kll#{GuDqknYUeKD?qMFyK6RG(r959n%=NQ6kA?offKT~1DWSsL IoyD2|0Odh^1ONa4 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..8a3be63a5009f198f1b1efc342f78f3a14429f32 GIT binary patch literal 1840 zcmcIlZBG+H5T3mrTw5wd1T3HkQn4*BC-T7$5E4X9ND3w`Lga(Va<`V%>t5a4GvQzP zMo1*_2l%6mv)2QTm-@k!FS~O)GtcwP%--GaKRM)y&R;U7dlX9V$pu%Bw=YYAP$95U}=pELW6H3YOJYiAMU~94wEF&)y?hC3IfkKkN z@g=ighYGYLn^96yzWe134(@Zh68kt?7>~Mu|=Ju3hgKh^YVyn zz!;*~_(X8;sr&%)C4wKvwKqB(f_rG^+5vDslG2tifoFwlL5#~FZiU4XYoTNd=e=wESU$!`Dv literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..c683b667e73fb593c8320fdcef356ae107a816bf GIT binary patch literal 2679 zcmcIlZF3V<6n<_Jnq*nq60m@;Q7TQ7lqf0`(^lFFr5Mt&sdRju*(8^;u-Pq}U9}(l z=>O3fu#C<)eD+5PRa6X|!Q~`AG!Vn( zG*06q10UmxnqE!wvwRY>xMpzS6E!WX(TW*v&CrqiQa*H!c4Z^^ zs+GW_7a}!0UzT>lfb}jfPL_g}-8mgu4=FJB;yD~0_RgX>X3t9Hf%St`axC|tR119D zJt(iSfa#ijK>36|Q~YIIiX->FytE(YhPl4HXqn+)EK57E{GfaCsel6b+H+Z<6LqC< zfiH3s=EIXPYF_9!&kJAb&cPjX*ZDhn8=(WFYXuyft55iCLQ4%hgS zD#db55#Hm!3Si_PBT;yQWd2vq;vK5$$p)??g>?l5|bO(@FDE86aI8AYB|w`jtV_`&tm4 zbTJ~mgi8#jNdFw^c}vMd{T?HknSP3yXP8xD>06D=sh+hXrLM1;$@HwIvOFh}p;Ccw rsK;-4SANIF`MyJ{tD~*x_~R&bMDjixPl+XlxA#3I33_ literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..a99f00ac8b4eaa2105767fc9ef743dd25eed74db GIT binary patch literal 1940 zcmb_dT~8B16ur|Ax-C@@5h;lBDNv9FQG9@qAkl=RKmrJXw_!WN=yn!ocQyPYA2muy zB=HCMql{;^TPYtUG4|!o-8*N_J@?+(-Cw_d{3N0mG?yido)|M_jGd!an$FNnj?y%3 z%+n0b=CCtuwx4C_Iit+WP`YKI8Rb`$5_;L?zAt=6=~tDb;F!^R$?+=oQRs#hX_t=` z4>Wg#E!9yN`1UH7DiDe*M{GKWq8z$nM~L_C@rH0htp(y+vLbe*Dtn)n^npK*ltPtF zkWqI%x8rGHuZID60m^R51LO)dV3Q4C3#E7bBez|y4(!c9OLZ{6h@*v#PzB)MmcHC~ z#gbB9zys+iR5g5sil1-WE0rTpo9rpYjXq0@524heoJ4;aMEL>NK~=kDQtWvOu%5B; zE3|(LNiBP2VA@JjiM6n@FZ33NDn=b8&*APi*U~)4!BlW4A#Hqt-Ry2dl!|89z_$bSF;*V|t7kpg~4&n)+_m$};3bj8>aU zo~PT?#%Q39R0}_9lW%Xtp7}!13_eb+c;Qm07H8lkO!2TCk$;yuv9=SVdx&-UaPRL? zH+*!bF{)5Qp?!@}Jynzi_IBz8?g4Vycw$)7#qY$vL?ZfNTcThmJ%pdH0_agBxGJ;)D`rO`cHloU{wS9imYTa|}Hi$LNaCFcBr`suIOL10@Zkd-%-K2tAI|^+y;Y z>x|O7r_^FUF#WHNSFOa eIa5o0#@onIL@a?SCb6clo2Fava*=1D&cYv;lEr8M literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceState$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceState$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..a1a78bd9f88ecc9ad8a19a7b7ec8368c756a687f GIT binary patch literal 4099 zcmb_f-BTM?96dLDgoFqbEN!h?rL=}XNm0@&APV$@+7z%sY^_?C5I%iDV^kxOx zk|S#Z?F&vp3iM`8TQ2#lP#ZStoB;Ylds8dNtVY-7!l7(Rtsr3epuwT(NEG zE?7pXB>CZ7OW6!pVVKoKvZbEWD)p{{+%SC0QwdQcvn&X#)B)ukSEiSJk7i7dw8Wt0 zc2w`EBMJ=Gn{;pcu~BE5^qI+S8F!7eW!RhPdB?G&VNcIee=KKia_oGU&dX*J8g~w@ zYv{UfduCCtnI)6vtr)IRl%90wY}?^vF&&%E9xo^SaoVT_(@VZ(DYu#S)no%bp%WTt z0LHQ1FfC@qTyF1gs_&UrI%}4^8NJb zHkkt(csYn!oz?>Pn@{Qko*m7wLmPLuE~WjJXk+To#Iw51t@HBGDdq3Tg0D`svDKaSJMk%11yY z#4V`Dl^^-0E0-Kw9q|IE_0zr5jHgZzj8+b6d1St|l7MhS{nj zK}Ak6a+;9{UO3WEmVyzg|$tJ+38e^=+7$d|ezjM5s zDv0k<@C6losp07gxG;#OD;UEWMk)%%g9^B6n5I&&98l1`>sv*^R~nw9cUJj4@0o4#pEGD!%b)^?MD?%8A0x3uXy4Ntd;8wJsHn=&}ZNX4e} zL7OsonIHEk;6V2V75u0%>NaKY3L%8rlbR^#+oRw&DtM&f=?b{P5lvSxg=t1A3TA=| zrZ`0#D>xKX@Q22zE11G8Ap~B->s6?9xej!w#TJD5s|-_FM;+A}--fyJx|qj8`5nPC Oe8&mX&*}Fxj{O6T6+M9f literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceState.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/MaintenanceState.class new file mode 100644 index 0000000000000000000000000000000000000000..07e84c58e2ee49d1d8be014a97c6c0a27f693b2d GIT binary patch literal 2569 zcmcIme{T~<5Pj<(v3)V61PDz?(*{E8B#-FWcRTam%-fkg|NGzH{{Xm!?@KW7rGc+-OIEjK z_*#Z<44gu>fSQ24q;A z7VAx~V|F7a>ey!MrE7)0)zqf#cB3#bA6T{z#wK`g1ClE{wjgxV+Svo}zCi6jw5q3xJ; zI|yrOySHieLyWxQw*zJ*Ih|>1if=hT`d(N2p)DuyIE|K)@5n6o`Y{tig<{Zru3M2q z4I1ytvY9~bgO69{dM6j_(&)<3SdOT^=C#Opx^BCAJ?d<0|Di~&Fjn`Pma}E~wmc^< zbK!HFD%>52c1VLm+6<~0QTUgW;Jow63Ul|E%t!3EVW%sU?e|03chtf(QnOtU z3K*MSzCI1?EPwk``yT#w~WJxfKj=XYcA%s8mu{cVqj7Zidx? zcLJ99Av(p+SRNA+09P3ih2yz+eIDbSPxJW#_(2J{IT3GAtbL=4{YI0C5yjj$`nca{ zDlwwi`$nJi8%@VXC3279Q<}|?{05&C=i>aIP=6uwTO80OjwA8=OSsH+xo3mfIICVZ zSNLvnAWn7w&eBkv&xkWM5GOYP=gv@^&xtcV5GOwXr!f?#LSm59a?ATb48rz7pU+ql+4*(WM$6nA}4cx7x@G5Noo%~L=Hbu z`7Kt@BP#Tm1W#hZ@g8VGNO)Z3x$u7ou3<5umh+Wg@ihuhUZE)Gs#2jpjjbg+$?^+i zxdKXJ&0tIYW$-MOX$jZkGAOd(_hh=9(2c%^LAudDP?mhsjOWO4gYPnAyU97n-2%G- M>>61a_y80C14f&A*#H0l literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/OpsGenieNotificationState$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/OpsGenieNotificationState$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..88c3e2426dae8dc5b75880fd5b9052081705da2b GIT binary patch literal 3181 zcmbuAPf#316vn?<7M9(tKuAIoqtQeXVM!Pj7EBh10nHzS5VMHpI4lizYIkOxok_`6 zE%mBr&w4dgMl54lo;-Ncvu8bf)+)>I?M|>W>`y z11C@=3q3R1)xn&Fu94AI3+V-KU0LW~)UH|zYir71an`Dw8C>)#PIcAswTz?5bnvcj zSjfzWy1K4>3;FA=tNewk(`YEZxYSu#!;v1tyExLBL`h(J*VTp-Rs%-T<5U8DmmIer z5v+K=vX{evX)29&=E(^5n5ke&TNrvYeOvX1DLkLBXJ+w^bJww}j=O2kdtOyJZfTAQ z$(Hpdk2mzm;wG`Q-@Jdo)3-u5&^5KH8=6&c)A5~}3Y34@bv@P-%ZjN!(Tx0k+u514 zm%?gQ%7*c;jI;sUe`JT+sLH9=^$oRU;oM_nxg7Y~-E1bg_Be^%S-=12%Vts{-TkW$ z8aatXnUZy{=4h9fwx${lXOm@=c6o}NsQccAmb>1)CimIGg^><};5p~YUg%fUm8Rgy z#11qrRnD8bq#D6BuMy;N496`LJ8EZn4B==7xAG`sMU+nE@f^-%@KzqHcv}X;d5q(X zJZMdbH6hldSd(HE#VU$5CDs(!U1vLr=3!&7F!29XUS7MSDuIQA&8aZZRl7CCi__<; z_d@NnO}lboESxpVqP2`&DlW!k4;cX(eaAw|+hFmxm1)1Fgctd3Il|8uH%mHc_0#65 z@cAT1^XQ@l3>3Cu6&@gUdmCN%k-o>d6i)Ej#}&W_NaI89{RmHSlyB|9(|DF6(K{9C zmANj(xuZLJW8b0sC#1H~(?<4VF8_pqecF^AYHf{VDT34d@tY_|%`hb36|NBnxxzO{ zkKIS6@HIzW%~0h_419)Od~WFFcJy*mKU6!*RV@UWd7d*PoJnC61^#Em;TR2ZdyY?W zI~%#p7Rb~4EwbXZm7pFj0lqLiW_LVhDRG|fEh*6ig4`~GFG=u~p=T1X-l=91jKk(k zi{OPg!8j|RJ;8xE!9ByHNidF=C}GLfN+8JZB6vW89}GQ{fcKPYCc(sB1QUq_Ps9m+ zHawaH6A=MhLIOeGE`nc4@SCA$60pC-2qyO;m`o(-j}!cEcr*znBLcRv1cHHG1b>j= zPeacnU|)<86!#)1CK4Qs6Z~a(Gzp3k0b6ha!Qd`}ze(_qp=T1XpT`KM_9B={Bsdf! zu(}P8Cc#uhFpZb#S(<{}JGuMa(u?9U*``dZ&2&c%p$iw9ZQ~+J&Hogh;eU=IhuKU{ G;`o1gU5O$9 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/OpsGenieNotificationState.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/OpsGenieNotificationState.class new file mode 100644 index 0000000000000000000000000000000000000000..d17535d7a8a125aa1b1ff308d888b23bea06fb56 GIT binary patch literal 2403 zcmbtVZBHCk6n^f$&F(Tvi!Ch_fwrj2wq;sdM9YE##intEq!<$8r_1bRy<}e2c_Ah7 ztN%x%n;M(=1N>3Ob7rUPw4EiDemUpN+~+>$edeEk|N0xi3bt!7@t}@ne8$!ai_ckn z!Qvr{)jGz}GO$)h4J{Vy2EMG*NsEuaGO!_FY{uH@s6fDc;(03Aa%32)P@uf+_M#Jk zmA37>Rxfs9S6iJEPey^Xm8HF29EH|yFMO;#t#H|k@ zc%Dz5DFBLo;SDZ1Jhq;=JwIUgB~QBK`C8)PnKi^%JF(+PVombs>2DO3;`SS)gFLbU z?nQz2x=DPMj_*qCQH@;{hO$eJj9%a$YKN@J#^NBYIMNQ4k>i#QhqUE)=zP4bJ+%|N z2P*iE;}Do=`?hrUWuW;veOZcr)RgXaE?es@;vE*0OZw>CJg0dxO{Jwh9jyx#8;kn_ z4;$G){>KdQWwAhIJ9s&y8x-KV=5ZmNbBgZSxx;y9*VT?Xl(7?0%c?EgNvl-f^W(r) zUnhexJ94F#cnt)`c2pRBt9UX(6PIw=z@~{UJTftZ%O+-7%(0keG0&obMS-<LQYa{4VT_%!ce`PBK>i*%&g%oHsG9QH9gCk`}tGUaB zd-Rzbr_ZHOFpdNgP@1yLhL zgXU5YHEJ|yIt5W9M}y`Q&=_TL3D*gBgVOkvo&@P?^ACtWQTR1U?Iy`e@_r5rWSavF zK1%8{sLRLnZYGzfn8UL)lIIiRna$-X-Ato6k}Gjf?_@&2lp&<+NFRxtU)6h0q1Mv&@&9x2WTN2-d|u zimXe0lvtPhO6lUlhR3oUP{sTQ6vkfF`AMXdwpDg&QzdA#o~3Y v;_hkrZl>eS2BD|AHWQ*X8GcE8D10X4Y96^bwjK-#kwihtXOY} zRTgV5jrla*wqOldxG?MZYlZd5jn;HwdDFAQz;;wYd+SkHEzH}iD!3Yjn`J-LE84L` z?R%Bb4pqrQ=cM*@IAx)2aA?s&`;5P=EcDE3PnDy!B^4~#OD<>nW_`zY7wtgHxG~ut zexR!s($kT4msMaPcf<2kFyq?Qs^W{wEygv_5M+F%!4@@2g44CER_w?PB}m(G{KyL} zy#JV_;|HoR7llk!X{beCM!d&N2~*ob|Klm#T;ERPNWz}U**o@zU2tu0wNMEI?X8xk zn37CIukwhafXCt`vFy5cANWq+Vh;71TGUm|i!g5o_L>S+aK-a{UMb!z=K4e}@Q(`i z&Saq+xvtzC#=kJw%(V}Z^);*VdfQH@H<+k%Pmtqj-*=Vm)spN#Nn#&u*oXLUn`zlr z-Ur=7MqajMB{A#zrrKo1dptmv$9mweXsPscRRtT`q1CY@b#39|V5?#9w6hgI3LJH< zrhPKG7mdnYXT_FPHN5Uu!yJy`xP@YCoh^rc98Kd^4izkj)Tta^z?n2|=dg%(WH6A! zD9*@()|gmhVvUP6F4lxt6Jiy`DuSJMsIM3n_oa!pN>NyKgDsWqxRm@LR^sl22Ma zw0SOkKF!fI+Gqj2`7K!a2S~lQg|>TWzstE4PVm{y6~M=6$0ywTDW2gdSKotY@jOSO zcdDUR;kp#(j_&9U|A>yCk=jD%F0!9-`R5Gmi<)eIeQQIOA~?+-Kag_P3_}85;2Lp| z&3}*f;d@BuzvHN_7OH%ffiKa8uMEBHj$T$S5Y^6dRUJWQUgXRmXHpnKp8siaI7~y_ zj_@gNFE!j|^5p6I0U7aHPf#b90ACv(GdmtLlsL!tmfX<AeEf>GXp-3boF3GNymO@dLpLJ3Q1D}f-_MDTzF4-Gw&fQ3pmlVEJGGZ;%e zgQwyIzZf1(g0aRKuqPxCbT<+FMuOiBJ(GY9CPpy67r}TUK~J3E55uELFy0_wFH0ck zZ6f%S1b-QNCIK5`j9_9ff{8?egK>ht4UZ8cStXa%VcUY^)}PdXb5e1wbnK+qE!1&;UxdF M6gkXh@*Ix;4|{x%5C8xG literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/PagerDutyNotificationState.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/PagerDutyNotificationState.class new file mode 100644 index 0000000000000000000000000000000000000000..73d2a831b1fab81ded63f20da4a0e379ee32f518 GIT binary patch literal 2412 zcmbtVZExFD6n<{roTP?sWh-k}nrt@U*w+^$rCf{?uzeAy+(R}%-{J41}K6?>i}RsxlzYxEJpZl59@q%j)b zS`c_j`bmH#+0&mZDx%d3g9Ggmg%zprNV{ZB*Ovxq#YTJ1c8>#>9>=sE?9=&VTl;D& z?(V7ZD-J|psvWq}+m)f_=k#U4e5)znjZC)Ie+c-bpj^_;bJGm-W}Z?@``WAsSED5Zq zA@JaQEHAYE?!2Jt&`KPRc(AX!S@*RV*o zJ;31oq&|bXd_eE!GI{bDJj-KwJ|v#`OrAmp&*QN?9M5bfPceh1eI`#Wlc$uy^Uaw& z3zCqn1w&V9bzxJe!F zL$J>Gk!M}#qrke@CkLcUeUw;ReONt00s1DGQOi}3TYA|a&B-7G4A0g31oWU zEDeO*;wH@x{niO}I}K?e!O;A@MCI!jsPg=Yk(7=T^m2;6i#%CCh0&D6#Ovew<46T6 zR4iWSGCn#f-;LDW#7o%Z?yX<(Hs>|!@gn)SL+^658+S<;=(K{1WK|Q(#s$p$1OCDC AZ~y=R literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/ServiceNowNotificationState$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/ServiceNowNotificationState$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..c49af0413a827f5307cd6bb0e8c4ad1e5d31ce36 GIT binary patch literal 4103 zcmb`J&2!sC7{*`OP8_?Y`6whUX`z%fBu-M7uQ;s}J9cPEAvmE<18w`l5smW(W= zgfnM2bLjs7Gn6ne!!W=A!wt@y;mjF^;dyN}Y-P*S@#G>syIMW({#Lv1t6%>8>Kh_T zlM$y=v>c@?aSG9Lj84)^aeA3nxcN#9m*NpxrL{O7yvoh1tV*obSzTkb!Rj?uud}+& z>ISQutlnVtCabqtz0K+!RywOqR^=#Fq9ioZ#x%OHQnsq8nrpaKnX2rWx?}5Qk&&Av|OKy9e5$BeyYZNWG(x?bqqr?@{6!wy#*Xsfg^4(5s%yYy9=O?-~ z$uLk~MQrJ=;b1nsdfAb?V7YmpW!bVtYSneHSeeOgV<{6pu6n5E8V%pSh(jrF%4WX%u89|qPnb-g_2!|)wamdmrnfv$>rUEjvKL`-~H zoT3^|^li(o;91SKwj`&7uxlH5;(3SQThmqghtSy|Owl?iw$rsp#`i>&>J@wNM zG=^59`3{|>3AEU6((@}}TnK$52YypuQqQ*(+Na(&wm)L{Pc%$FH*ANSuX?sT)g-2j z>dTt~)8GlOV+;p~CqJji)Ln`uKSe9tm@5Ap5dBJh^qb-rKk$q5PJ`PyjA|lqPYONf z(G$XAJ%f9c13nAEVV}d5!!CGXV@dGzeL*pf+FYPs3?cemi5NSG7=y+0c&_ng4j_oP z5c~mxKNUZf04D=(D#2_gg4sZVBYuLvl!z+9tVe)D7(kF{A@~~v|0sSc0Zz1!Al-=| z9Z2wyk3j2HBB}&wj{wOdfZ(W~KpUVwZBX%336P0=1aou&JMwP>HA#_zykn;bi~- literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/ServiceNowNotificationState.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/ServiceNowNotificationState.class new file mode 100644 index 0000000000000000000000000000000000000000..40fb5d7e7b1eb68a6bfc02ad43aae64ab2443379 GIT binary patch literal 2985 zcmb_e>uwuW5dPNpTS%Hhh$*B=>LgCuW@!qP5;rBcl7Q<#T_PcVZPq8|MC)B^FDa3D z0N#K%KtkMF+ND4d55PlJomp>V)2=N@`7<+n&Ue1KoSCEj`|%%t0l0!svKT=nhih12 z>pF|~S*)^HW3kR+gT*F`8!SG^;WW0=*v?@HTP!|IOKp3G*OF@E$kbe0(}gO{w&yx(UD$_G7d7in&2r_w z)HPRHX5H0Xv8*7a>8?B!3dVa$bjud%j^`2qVX}4EBvQ{N*u_4uO7%cH)Ko(=o9dcn z8A3CcSLkfGXx?e09?6jl1sJ(rgA{r(42tv?d+Qw5i&6 zEW1G$(YCF9Y0zTavkltv9AS5Y8!OLu3gEfYPsEsf3|FNoYF=wk*ta=i z1*26<*Nk1wmi!$qCfqM1<**saR{0kxbW6|0-#9VPaVeN4RgtE2S19fB{H}sZxi^si z)Ng!TDN!Z&p0@Nlg?Pg5EroMI5q|XoA^i{TGYzq?c?P#%rlK2RwQ_aKvvqMJ=$Od? zW4Oqpqaa@sj(byZk2nR4qnJjmfE|2Xz$A(VOtF||QDQN{Vur;mi#Zl$7H{H`g6l6> zRHj){aOH$F1&rZU1yeo8ZQ%sj4K}F2{XvrLE(B47^#_#$&@feY z9PT@WOeT2p+Vv3_wW{eK?V1*fd{BkP`B}G5cpUpxG-=E6PIZo z>6eO5yd9=68DMChA7SXThj@wSS?MXk?*aOq5PcbOvVbh3De2*7$N$fsie>3PnxE_p u-aRh&xzJty5k|<}srwk^JbOK!A|F?2Er$27OgcfkLwJR(Twsk*{>3NNelf8C literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/SlackNotificationState$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/SlackNotificationState$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..40ddcc522ee245dde4e0389e56ef510eb4f15e72 GIT binary patch literal 3143 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 IN9Qm72bPjDe*gdg literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/VictorOpsNotificationState$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/VictorOpsNotificationState$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..04ce4fb4e58735ee3e3f0b29efb5bb61a1e49b80 GIT binary patch literal 3197 zcmb`IPjK5r6vjU}P8_QyNz*oMDNtI{k~nPyBymffhBkrH(%_Uj4S#NmqlE3ql98nj zxdH=R;mjGXbcPa!G7KjUoZ!qE&YWR};d{0kwu+VMcyh4(cD4Jx_j|kV>6d@M{}I4B zyk+7LW^=e`B7@mH4r0#4OSmM%%XvQL_hA7qn|$$#46lgws#sUWx+d0ZVqF(&QLNX+ zs))6e!;Ku?Fkp-tIKNo)>sBLjqq?%zHa$BG?3!aKuMve!Yem&UKUiusD}JcfRm~2S z?^Q!Pbjk+$W|gPHIRiao<0}TT3;vp8U~o}+P9>_ZI>EBN>T+gy(XZL=iXA8!$CKIc zUDY&@n~#*c<^%=`*F4V&7F@g8bok;@mvN28f{d>`)}=;SaQfGrbvtrH#?oikLUo5E z?>wYf^8?3Pib7_pJl>@%E!-ozgsyF1dRk)P zJ&+yNvJ$JZWb00|X>afbWj&rBCmMmjuB6hh*Ep_Q}VRVi%)7sk4cgy(Hm{V1q8 zS6cGN)7#Oc+;aMvJFoMH5+$^AqWsy2jz%w|N!>s~V@TLq# z3z)CLv6z?PR_7-~XA$yl|864wtfGdCxkj01G`w^btsLHzT>c3I`?MuH(%u@&QUoXY<2O>ynqf%5%UmN4 z%;Go5PTWJT_%%m8tx)C5419)ue6H!4+j^#4AgZ0_sy2emJj97fpoAf{l|oS1L2#c0KWKV70SlFCI>FR#1XHO5 zk0l9y);#J2Q!xR1LJGma4uW4v@SCQm6R^P~2&Q)WF6oR20 z1b>j=PfbrJU}H=W%E2!?kM{7r&?G(DYw4Lw0n+Kr%; zN^l@SVDxGpb%Ih%a1Q6`S(<{>oz#A>^rECpz9rLcGre&`=)sGvws8UF)_(@a`EOF> KAe+fkIQkzj&yk-1 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/VictorOpsNotificationState.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/VictorOpsNotificationState.class new file mode 100644 index 0000000000000000000000000000000000000000..20f1b368d377f03126b1445839adc75aa6306ba0 GIT binary patch literal 2415 zcmbtVTW=dh6#mAywVj2~(1s=raoPrO+%`+;73>C*G)NUDks1^U@wC}Y%tU)*cQzu3 zSN;zOtRgD$1Nc#hbJp8^}1iLi>*6SbH$F}9#{=nJ@0$198ca7f8JxzSAJh`W0weQMx z-w(($1wi31zrtmYudOFu7)0#8;@cj1zLI+Q-Wp@9?ZkC$Vomc1)fbX#aq|_@Q6BjK zcXg!vK^mXo$vCzL#BYRAaHw3eno*Ew0;GJi?Uhk#bmUq)A;)gJ9M)!VK;Y@V^5u5o z?aSyZjzwUmA2_zVXGe;EXNML2t)i5-3fX%9A?9&WxvY=R&2ySN)6{y(S9(pL++Nue z=(h8L{GUPM*J7E9xc_2QHz>mMP33Yn?iAk-=MU)ho!1ZKp`Eyz+E(v5ZdR%0ZjeNd z{5+kM*5ut<<$VyC+Lp2YQu27jCNAQVfejOzcx++;mrN|Om}k*qvBaW{6@j(aD;~3S z1n!@Y#l#HW7Py*w9mzONJhq-@)_OFc(#)iL|F7ks4GIol?504wo%=TI>>o)-cMEq4 zx9O8NO`lE!a~uF!B`z7s+0=dqmq}04?>Pv}$8>omy`WN_g5G@@w2*?n`Xxx$JHJ8vj?&L*YS&5D((@LU$u>tA zyqDHzRG0VZY@v{+T)?wBk>>;ASuEtK6!1JclV`q=r&_?%Ka;0b$Wtre`Q}WXr9vK~ zfamB8o)Rx7Rf+p$k>-9?JI_%6g^Uu$&GK?2)vQ_kxRX8piO?l_bB`Z)ZcxXE5Uk5X zlv!7XsIaaM$pPuw5H;4u5XRWqHPneDKm{R9#&dU;%b%vGR4#o~3Y vr|-uM-7a$b3l7s$tLIxEp`+#y||+XgO>)l4lDZ(;5q1}F4q literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..ee82c34b3e258b3d74baec970a1aea0358512ac9 GIT binary patch literal 2674 zcmcImT~iZD6g{0ph72)8*2NEWjVnk9>Y(d)Fd(=tSgG&;#jdqgR!x!y+8t)H^Rcx) z`siQqS7;TArB#;C{wQnjof*RrVXKt*keR->yU#g&@9mrU`04F?05`Cxqkt(5mvy8t zmBk>g==cR!*}Rse$Mpf^aYLtxn*+Fo+dQiDW13gp(NNVeqhVG+j0#NGn$D)t4y<5P z8LcO_>APlA8p>`5zGwU{8yk-ESKaZ|nrfQ9a_j|ZwxsLbb=SR$K;N{om0uM|mnK#P zGV@ML3JlhiE$hK%L%J(w!y?a6&1ss}s_81WV`s+SP@aG`7buG`1#*kFE!}y`^gKxu z_YRTO6MK*1 zyjtoCPOlPJ=*AUT>2mcX4+77-kI)m`9>w=r>Ca?Uenpc>R9la<%=bWwz@Y|rEP-n2 zAhPK8=*v#vHsyWAJ@VZDciT&RgQ*wQrROg=o}a@HI4W@a+xvG8M=+$}ZVq#pXSh>2 z{Dfi-_wXx^&S<#L#&2wl2~5g=+p_7)RZ-wAYQL#$%EuaAc>?MK0>uc~|}&C|A}UyH3&s z&d1j!v6Jq6HyGt7<*W%@*mHG4f8t=YC%>bBJFUPN)&CdRF7@FX@a`>wLr z_tJ^W^ao#{Zvzs{DWy>#jj257`6F3#NYe-?l(!+u?~r=9jr1#IUXm|`VS46i1u%t7 zh;;?W$jU`~a2z9KG2W>dZ<*Gm$ak!RH~9vKJ|MM?zCB>C((-FWb3KF|j<&|I1cK8f znZ8E2;%JTquh5$b^zs%mldqtaUyzj!rSfMEFoS-~Ch+tQp3XH)XlH3vbOiSNOrCS( zNntc(8lw?2Ezz6tvSm6#|7&D-h&YD8g9J&oLy{%P^SemcGu|O7;VIb@WHZT~B#HhS z156SHJ|bD!m!wP(bn|c_hFXkMIl__Q-xjo?+#4MJfIP>EJUie~sQ#d^Jq!t=aE!#K YNaJEC;}VSUox(|a>qIn2;!fbie^F8G{{R30 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..256116c33c0357daf6c6e46fe34ae3674015ae4a GIT binary patch literal 1639 zcmcIkYflqF6g|_Hz9Z15tCU4qjUP;;!2pp+QZWI8(Qn&!fYI%4-G>QZ{Y4rz zB$D_8{87d;+XV`U2@pT*?46l=&pqePo%!|q$4>x{@gRpZrt`?b$Y3UqBn&;=%iw;V zJBHq#&A=4MEQZQ%Nl&1#;yBVYD!Z% zoiOmt*Rrwgy6;!rKy9j~6)4wvE-m8u3*MGLNBr&XRA8(ZsOfsrd>IA=p;K;MZ4o&1 zq=0jZTdn@i`e>P9plq|Q{NTL2y7VG;^KEK(*zD@>Ro@3y$Lkkq{Q4a)OL? zxNWYqJFchsryQ$I>RC^I2$d&WNgjd_7_UyBh(FMrT5?;A8LBHsu7>S~^j=v^FECPf zo0h#{c}maY#Z<7Z$ft8E;(seox~3cz%nKx|(;EU$tG$xW+7B8*RM-`b{jOU+s_2Y> zmAHF(2A?iQ>;kHKNMu`b(+cf?N0qHL?YMIJbvN{ya#`u)E&uz<%<3)|=wFq7@Ivag z@Cz8kPysh_OJMQ*mvNt_Mw$?Ka(<)&3K$TW>_PCPA8GW>wb;@(3=jFv`-$R<|GGCF^8hSGhF~?o5B`}35|0(V!(N8NMS!w=@e*g$-q&WZp literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersHeaderArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersHeaderArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..fbfd95a48491b92c6d0941d07d465456483e1a5f GIT binary patch literal 2482 zcmb_dYi}Dx6g^`*alA2k7)VJxQjlcinwd z>AwQ0B^5}hpZQUUGhQd1BsN00AG~|#&Yg4anR~DIufKo)6Tl7JvrxeGEIzT2!u1@c z@u`K+@VQ>z$nkM=98>th;>MSHS<}{{wr*)_X$)WK_}f`5XR(sSs(_diSlMd&ZMze@ zaa-A~r=Al9PE*>->%>uLe=8gNzW;OGkJPSeI+60d4e7LG5GJqXU@xo*j4moqMN0zd zQh7%pv+B2`z~q+lWIb*-Wbn{wxbzgZ{HEjXIDyjZo--5et56`j5-XR;0{KnPlfkO% zgrVfdy`eLl>p?TqwbIaNH7#+hC3l_JjhJ7?bK2C_I)U8u18LunBi>@IJT#>t;JgWD zvIxwayxpgrqZ_UcIJ3C*$a&(}uH)_5+fksrz1kA*D7UTl*avYyRR@Dq^*#GqmHtpV zo8D_BD4fL?7!PGLkkO9g#*}~go7js~Tkfb(v11=N0c#z}VA=Ehs5=g9fY~n2f$bbS z?RxCGy2W{$BTo{jk%sPXfjgz)MG)57_T!)_*Oi{D@_(7rYr5F%+`0^-4L^+XcpEbU zw}+koJl@1xS=`BE4eJ{8Vje|Y&f_jNv~?+uvR;<8Rn=A%mjp`kpd*`+Y!y34w_2Rn zqcmTP{9;2EJ>R?P@g6nqCcE3n)98DF4P)bf{ec}#m%!AkdAQ$r#Ows7yRJA=uAR78 z@QFY^j#VJ*zNZT=SNa_Xf8Q9X{s&et{nk z^6DDV%F$-k`8>zf3evQIsmdWlxcZ|320wXVxI>cxn*foZ)Gnu82#w2aHN2XwMuyAJUV;l`hjfpPK1b zk11E7gt6a{(?rRgj4}lH-XO^xljI0l;yy=`NvHcJZJkN_M<)G~foCSo(IJ|dbooTm z73PxFgbOq@?H~o?rxmmeMpHq#r+`yBKtcYDf_*Ab2A-*aBY#Rk_1_d!2P$~uw1T$5 zXey}o6kNqMGV5|~Qi-nGtZp3rdxmUb;sqvOVoJ9WJ+Hu%PI}DF47vnKx6Jm6oQ6%H V6h7j3>30h6@@)}*n)WO%`~%`{L-GIs literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersHeaderArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersHeaderArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..0b7059f9245e815120f7218cd9759238a959dd23 GIT binary patch literal 2045 zcmb_cYfltO6g@S}Fb{eKS!Eqr->3s3y@06ejKs%kAQ>T%4IB4cO;3U4_H@to!|0#z zw`i1T)?|NxKgxKjX{3RfjgkFQb*t*!bMHNMt3G}H=U)IfuvkVJznEdRf;r3^>skdC z7K*rD!5|jQaHEKu6`m}Z<6n!oB~ZKiZ!h=pXdMR+P>G&PH z8@q8w+wGU0i~{K>TYKF&3hh5s>#6VmwcsdH_06bgiZH>HJZ=lb7{NM+qBoBKzp0@MY>iW$6lm6YF&rA<*K`$ z=SN8l}DZ88lvwWn6%PD=&98+U=xrte61T?X2$)6IPJR5SURzKng8 z7^6cXQ5;0bPrg0bjnab+?dfPyV4ya+F7Tk1CHTJHFg#*{ec0OR z!{*+qzl(Mv?P})y>i?j^P@`T}XnMDUyTSGOi?7R>JgGX)dJUhCZUqaFw?hGPPtQjxfem?&UDU_Asr= P&lg8%RT8U=A5i@QDT?12 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/WebhookNotificationState$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/WebhookNotificationState$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..ebf9cecd4caeab78eb3e7b6d32d450c4f5bba70c GIT binary patch literal 4295 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 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/XmattersNotificationHeadersArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/XmattersNotificationHeadersArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..126d908df5510cedc8ce6504c352cfb8694e2c5c GIT binary patch literal 2692 zcmcImU31e$6g_L3C{|p@q!6H?#cdPfIDi7>t98CefF>P}^N^In^nsD>O;|>jjI`>M z$3FKj^hdNakTC5`hv)vNPVbe3qqxa*7`qRa_TJq+=j_?tYyI{2?|%ZggH019EEu?M zB7=oI#&N^M7r4pctvo$$kD-V=CUx8$!sZ~; z2|LPazjSTw+bwA+w;Srfdfc(KmVVIiwAxiITPx4qkan9=_x!z}CNQ$7T&0%-E=53QTJN5^T_rU$4N4$pQ%8=SPPXym;!}O*OmUdV+Vnx zjt7H?n@&(k%8lX##=C zqmI7pzH`+(Va{Uxx&4D}g<3gQT?KkEJ??$BK0X1_0a&grlfU_GwMQo>^l78_Px9pd zq92yk-&Okj8QLb6`hf+$?Mn@3F9d$+U&L^Lhvo6lmG6ge=!T`{{xHM{oN99U5?HAW zB#iEnx$T91OFmRwF{l5d_+I1NOogc-1HIt|x_}RHMxZu8Jul!iCJfvwU=8bxcd>v^ zP%hv;9&qcDfrlJ?&B2Voy!^2%TUxfuUE8-ilKv{nvq^QFEo-mblx5d*uezb*Fy;nT zt(3e}Jrh_@b-Yh8;xhEEU<#C?66e_Np0(9{PTB-cA6C6MMJ2rG%NL>YWy5nDq)p&* za&J;I>H7DB(H3RAU4bjdj!rEgwKAGhJXFASS73&&!N0H*x?XvviFc3TNlo0=zH;}D z(~0Z!mtUf<1rp4AO05xU(*dF9S&G(>r4~@C9zaz8K<3E-vagZ*jdB@G(z8e-fCc0t ztQ$B-Q6Zj#^O&ND@h&EK+cYjixpO_d`8PQA7MTN#90PlkhTkHZ+Y#(!JT-wO5PVFM z>HCC_9QCo_9eOi?S$&1v{A(E1Un$B)Qu)INSivY(Q+Q?%&*Vc)XrI!kcnO^Oj5427 zCWGmSX@*+Nv_)^m%U5X$qx;Ao60wKCHz|^Qk0ei!myeKeX0}IC!A}&=QOqPuX%cfE zV@whoACv5yNKz#Tx_Y>hKy4;lImOQK?-h)R!W(?>7De`nGKb)?RgcNGClNtx$5gV4 YEUrc}uEC1l8GJ-_)M#JviNn607$tAx2K^03Tsr-Zvz z@>s?_UxLk0dJ;*uBSMDSitmeX+2u+J#nAWE>*_s*M{OtY>~7>np0qoAKGz|4gf0DU zq?P@~<64VQtp-|dNr!70_%8$}K(!QZs|6~slPnp=vPe!43j0;0359|x>vEfrqfjse zXN0xd@A(IAM_RgeTPoek#+`>)!Y`(`xUfjo>uZs(r6)F|lAEqr^8G-^N~jHuY?YWa zKX%(IUN;DhfP&9G;$9BLZX`p|$8BtE-mBL2Vr6kF1ldXXXDoZVn}+{|h^Pv_&F8wl2*i?Mll^PZp7 zbY8?pdWGp2KK4kh7hxG1<&N0mk*n#v$}PuDyH{NgqRb<-X%p^FTcYmWic|Z(B2sNZCWv!`>d~EpW?(ijV1`BW}L=a z5`e35kp%o2rBmC;a}s19xzDFSCjSCrk|)yS6@to9&VWV9)*R9J26hZGNUtn#69r5Y zlST|Snk1x*C>4|R(W8ecicC07#xX$o0QtB3C>U+@FwvN3n~9^R)943O#VD?rXd=>g zx)oMNMTKaXewT6Us0Gt$x&8wbsa)v`%0@%B;t91 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/XmattersNotificationHeadersHeaderArgs$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/XmattersNotificationHeadersHeaderArgs$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..fee5bb71aadf5827b0c9ffcfcacf4d974af5fabd GIT binary patch literal 2492 zcmb_dYi}Dx6g^`*alA2k7)Vb>H=a;puXAiJ9amA zoPD|R#>&8)N|I~4!NCsiUkJOH8Ig#?cb?LO}N?x^KH(V4LT~eNkmIczK z^0q*x?zg4Dt3?h#6))r$cq}2z1L2q$MyjJ-&84LL;8#0X6{V>YoUCap7 zPW?ZS$J=-(i*NH-#hOOFm`4$p^SFa`ZC%Qvte0hNRkc;cC4rKB+Lf(Hwu{|^i!ILU zftoKyez7Twp6^}tc$FG=gDq|(YBayVhOzNx|6~Uz<{*FL(V6-8_(8n`32ZS5g{qY?@hfnzhDDX2v zUR@+wIohl{pXaz*L7EmYRoREA{Dsud`$#`W=6Cv1IM3$0YY(iwNAq7=AGDtV29YcO}t2VpJkQd*qOEInDnm(o|!afhiGQfhr1^E*S9#Vla@Jt1q`C|&I|EHijRKZ)v6?6S=V5LN_5p`b>ryYGh_=BFEIHMQ@V}lc?F(y(qndJ&?88?Wwu}BG;9K; U@CnCDzf*XhZ;SBLv}bYQKj?2sRsaA1 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/XmattersNotificationHeadersHeaderArgs.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/XmattersNotificationHeadersHeaderArgs.class new file mode 100644 index 0000000000000000000000000000000000000000..94d86ba4e226135320ed61f0edc2a5984a24e8ef GIT binary patch literal 2053 zcmb_c?M@sw6g^&c*$<|Ll7wbM^G(uaLzn`gNxNGlLK6jvfD|f}^q-kE#L?``cE%Gm zZ;?ky)uL35)CcH8RXrYtFu-n9h5WIv?Q_q)_xRfX{QKA60PbR`iYmUb!(0vXSg_We z8XPQ^@of#mShU04GVaxQvS^RLE8}~C^8G~n9Tf>Ut3jZm6<@}&iUmp!x;^tsU}en< zyKXP>ldg6?(ot zc``4Il)I4_5)o0|)Vm~4BEn_{z}jms0F6o*Oxy$`PLH^qcID;_US@t08T-Zaw&c!_x4@oCb zB6yA$I!~n*a29tc?qV9mULlFHAlCXiz1k`on9jmoNio#!9fqI1McHa6aCisz*f0$= zGxP$6XaQA=W`dRDQnzx|RdFl5vI=J2OLIL7H}VcuhO7OK5nD?>;uvGx=3W7_Y!BP2 Q{Dbj1ty*eT@fqs>0T~M8X#fBK literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/XmattersNotificationState$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/XmattersNotificationState$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..a1bae13e0b05aa89ad5d703b5f6564d18fe1f09a GIT binary patch literal 3842 zcmbuB%X8aQ6vn@6CvohUyb4K6q4W{bJlZ-uoYLBENdhH>;FLO~4R6I!Qgvi0$Wn)F z_$Pp&Y|EM%n4zQtGYrF$fi-JbvxXhRcWfuzC{`fxMmqQE>O1Fm&$&nX>F;m92XG!n z3WJzQ;Dr=om`P#)FQ#w>FUfE=$;;I)yo^^;d@v`&SH&udH80jRv0fAFx>zN#7Q}j8 ztVOYIh;=i8r3BtkP(upm=gMv+vmV$%#mcN~IEL>TWiw+r>w#a*+^iVBZ+g|D>szZ< z+3+pbDfxzP<`g>emSg#s6yhVJiwbQs?ux01v5jigeBk3^8 zzIBHjOFIP1u4iWE1E1TJ8$FmOE!e}lf-bEvuygx1*0;9sY{WbHx!cAaBV!xRT4vgH zZPRdam$)IxlC{S41|C_QD3<0gw+?vndf@n0#ay(i7OUWz;TaW^l{Mu!F6)V9#jQSC zi~NI(u|1h72DU9_!}u3Qnt-()*`X$?EX-S`!MbEnHzK!rzXxZwE;;3`Rci^k8=ZvK zq+8#V4|jz2zuJOM*Lna2eb@Kxp9k1-s%E)X>unB8P2r5Ls2wrA;!D0~Icv4#RCesZ zf30sFxTIHiBaYTp`?cb3h_bfVjSbs1R>bn$RZE(5Jn(FV_GM|u3KvEW=$gkgRdNHb zY+k9!9*g{doRcQSJQdBVKkHWgG#i_Fr3B&PRoT>R;;X8lVVMZl@lu`R$i>USOu{P7*;48D6Xvzuh9E%Po7`CZI*q7 zzS>maTXv>C#b(p(nePXdXBJ&YI-kO@UKaIb{M>}axa|X4fLgUG#N1UDe^Z&}ujKF) ze-Z}yN5Yq7V`=r#W`1~mjH7A9X#u@sn^0rlA-1%M_tdW6+}0a^fc75{+eAkb*-yFrE<^mRCOc4nwINFp3^8Q> z+(^>5)k>PVC#Tr47+C{KQ zf(M$OPQc2inocmmBySNs9VVE-Gkn;Lpes!9qvla3n834?;CYTDNbe%}nFPORdO875 zEY);^>|Qy@M&{t5Fu|{yN1Y(s$N`%}L=L)l5&TAi-!(m*fSo2pFv(y3tsFcT&cP%u z@L{tY^n?li&^+n{lekC;B~2}Ypm!I+pCtH8)6)sqA*rV4Ah#DmE|Q=xM4*)BQ76bX z2-u7x2>QbWstcVet?B6m?Cc?e{9Xk4NPFEUg zB83PFdl3{O2_6X(jB6fsfypQ9^KMPYtoB#j- literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/XmattersNotificationState.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/inputs/XmattersNotificationState.class new file mode 100644 index 0000000000000000000000000000000000000000..1ab66d3b58f68089dc7898b106ce138c55f5d070 GIT binary patch literal 2747 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 P%)}*HCF-jrdNK9~MmeN5 delta 709 zcmaJ;%TB^j5IwiF+_o0vS*ao*s0cn#P%-JogsnSQ#uXuiXb46`w|s-?Ke*P!1fz)` z;1{^oPjGLXi;cY0Md!{;&pC7E-dF#d&wlxQdP%rAudaZNTW(XaeRc*UeVrDH@7i4Lca)bT=3g!@}lhO2fV#J(d#p({Q<`7nOu?fOUND?RX&7rzT zmC#f3_mCgpx$R>HI@X^$DdI&&b({|+IOHMzFE={Mbv<~0@sRvSN5cZrOmFDFbtN-K)^FDyaW$rfF{uS9<=e@vqN(=EcWkP#u8B^EdRWBmg*JyWD?`> N`6<==sZLL2eF2=mHSz!e diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/DashboardDashboardMetadata$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/DashboardDashboardMetadata$Builder.class index 4ba7919f3f926c9278e29f1b03ce80d27dc119ca..ca0cb55d9392a5aec35aaf2e2a34af361ebd5405 100644 GIT binary patch literal 4792 zcmb_gNp}=g6#iaksP3dQLkM8YUGo^t;`iPE`-eX|l+@uU@_PefQpX?|s#I{N(;8 z0CwQ52CT)o2As!*5F)r3!Wt0~ye1=x2ws;FMFelih$4bFWkeCdB^gmfpv#CNf|!gb zB8ba~B7%gBC?YUqWN4Uf#0+K|_+W~-tl>%nU!T*E)G(*e8n>;qnRX1z8MTvkDy`5l zep$b!N0YiW6WwpyNkg}W6;__gSdKYoOqppjmNfQRmhI?{$=wR8vpe33>V?VZL?)Tk zxsE%V6E`e<&Ws;4la3(-hsNXfTy#E@%*>fldFiC|xDmB8&V0s6N5}N^Y|PeEiNfHR z;phq7(Z_s1gsz{?Vk+#Z7BXiPp=xQPq0sJee$q*q)(qd(+1D*2MY{Qvkv1F-(zANX zNYFPKaM2hoG?UNb+oTUj407}t0=DK1$~a~+I?jXQo6w{=!=PnSw70wH^+>7xySXKp zv94J3f`Bd8^rV@{`F+&5!I}CI(=wgi3N^ibQzRa>6GUzqH!Wi#GZ!;br{yFiHg;T3 zPSIg`&QI1lvnDaL{TVZvkRXMRSPa%^QctH1zSvjo$#mxtY5hoVwIIXdP%vRk>zSlO zYj#!*q%hU%iS0sR^i>O3a8HBHBbYQC7KcLAix;<3hNq~~(a}uWvFA?Tm^Zp}8yKAR z{=z(=rS@&RY$O>=APYOg?FkpCSR>fVZ<5lY33_^DR8TgbWsOb3S%boPA+zj zr9kcU_W@>Oz8B0C)0OQ;OJTxP??q2BF5&TYl)>c%5R>kvFx*?U@vKzELT{L~GpV@2 zL}o)>Q@G&@gN3VZQ0`z2^9oy@wj(U|%ix5Ob`INVCyedbq2X#6DWt<#hxK7>Ku;JO z(Hlk|`okCyu}NNR7BPru7+bJ4jF;ra5VrCPTKpc!MOp)qGq@%zkIJH>3OlO2(|LDS zxpSd|`V2fCyKKZA4c8SmdvO21lPU~8<@&-+*OrY-wzhJ#ykMGB#?_3OGA3+GK7kZ^ zynQCOY`D*pyZI^ZTtt(5ULjylD{Sy3x_|#-Rg>oFjK@}f1g_;rX(IxX4p4Z3PxaK@ z)B(wkk~tai6~_9ze&(S#LUX7U#X8?byq;5`=Zw zkD9Dsd-8s1{R865O%etO3N&OlKSUiq^?+#wFs&$G4sg#w{%L|Q$-`vDp>izsB`lwj zk9Bvg2nKg%Aa?03Gg?J(YGF8?|J)cx=f5V zmuG1$Vfl_M-&bJqcZo7AgLt*vdAFCa{6Ll;E3o+cP8k;7WUM=>{FC|f&Q{2>EK7~2 zLVhC4&lOmtlPQc7B-dCpUXa^3lk08Ad^zB&owvDgf(wQJl{|k)@@>@}tX|BuT_gKfO!w!-+0RejJJNdfOVAw?02&KQGrETxj$e- zPaCkIiUE7BIADKz*u4Q8$_MNO&pa3VNBP*t9w2i5E}kDB=)a9x7d4{mUDSyVy3j;7 zxCn_3yJ!^M?4n6@tBV%V?Jn9xFLTi$y3@sS(OoW93@qBX9Zfv-zYxUVXvGtB;UBE! z71gWw@u%2>R1Nm3S{zn&IHBrsPHDKLf*zk@`6LM90#0Q+ek~@68Nlg6%1!b4Y<4cf c39P+(if6Mc{`!|)3|G9b%z;@Un z+=P=MOyX1!5u6TUy$lhYkr{^wreww;g0nK?5W#&i;}F69GUE`z12W?f!Gkj65Wzz- z;}C%+Gfl;GJz|K5_@T=%qhdD1?UO3zR2T}HW0sjRQnqf|BUZvnrWCY|&1)C5XhJh* zqkAkXp=;)#g0;ufrfn?flSayzPUyp?Y1x`>@V0_T=EfsYEw>mQPbU%@&+%qs{GzEX z7_ogu!q$ag|5(ggh%TlR=>;Pyn|4x*=}{|fFQ)BObW}^tOl6PEyT|g6*MVwRiGLAZ?yAsXPIjE@%lOo;CN7 zevvD6LxySCI~7!Sbx)Fb#EKKSY0NP7@$|y9o;)D|6qi^rEip-h<=b7XvF8k8sC&{z zA}+oOA2jKsk%X2?>D(BuG$0)=BDEjtsuW~U3<|{c87-Z#sm(yeKnfee(3G zNGRC4+>Vg%mw|CTWgoCob{KcyP8ADbn6SdwfSbd(6&+!0LT4D8(G^Cw3_Y^Zi`&B3 zg1#_rm$iQM@%7370?0a9#bOxek(84MHOj4L|N1T1sDiD#ME9Pc7plv1Ir?YRu)^$h$rj$#<_1b=G- z;p_q2jX{3Ngm0NY6mqUYaP^yR2>9F1|5V%);kD`Y;e#h zvdKZS$QB2!BHJ9S61mzzdtRe$Xdu&*sKHYR;%T(t8LY*#bj5Ql!{-^G7chVqF^rdR z5HI5xUcni>nz5igtEFoJ^~DbCqz!B$*oEqhExTM>)Sh0^|22|TL0lmb2i`y}-t>T} zIWV;#ANKI{2>(>Um*h~G9HXUJ>WWw{ljTYo7Jr77VA+JdrC0(*Eboxz-7+lxoGrn! z8T;rEiT+;KV+}nL`uA{y#JA9I@1q_cc(@vJeru2xO6M%qk#H#t<$u73i{L*b{6}Tr zrNj#1drHTeB%N0hQ;3oOE`@0Z7GMf7dh-(vV2#D zMH;K$Vg1W>SbtfEtt)ic_a1hy!}?u^9mcrp`>U?+r`|^7%w^m-*4uLlH4dsp);XvZ z8E~MA3^@pj3_GY7+327_WV3@Nk*y9|M6PnsCbHeZ>fXF={d^069}vKgXvR-igP-|) z{lYr?l|J~5f&Cr3@dw@fCywGToW|cCJEq*g2XGumGX1xPr=-mu%ca=_zfWY=BDjZg a9n)ex|I;$SUcVdj814-6_B;kUgZ~0Q3pQB* diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/DashboardDashboardMetadata.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/DashboardDashboardMetadata.class index 51bc4ec5fb529527c2e254924471d8c659a830d1..06080d4047e1476acb674c014e5d285973b20975 100644 GIT binary patch literal 3239 zcmb_e-E$LF6hE7OY?5x%nqsklP@vSdD660rY%S6hur_Ul)B=7nH_1)Au-VP*-bFk5 zM#{`vQhzldm&zD&~u z-AqxIZl&oqeaO3YCLb}`V3KFD$z+SkHj|G>=smi_ySq#ZI_;!sjBYadM5kSy?rEg2 z29{lxo<_#H<47-O3*VQ%M&l*d@hx9TN9A1G^}w3QKN3%bX$xo1Tym{Kd~;3s`$boH<<@3XDp3|nthE6Fdbko|YIMC{$huR28ibEhqiiJj zg7Pe94|hZESI8O6)ja7-g^j;2JXuC;yn)afJhbc=iLKBE#11L32f*>VLxHkvGmk>y zCRMQZkhH*qzcU@z%iaF3KqVPCj~zq-z_BO7w#xOmH{=00!^@UqsTGX|=H_={IOmpu zJeIc{xfN84(%a!ma&Fv`uy+wKpBv0UwQm9ATE7K=bCYxPktnun+*QKH#l_f*Xo$`J zubAhki>drxp$LYwH^wp;1cj+5+kzO}wl8)>2 zz@Sg*GlNdhNrO(&s|KB>GX_mFIZMY4I>+QZ%@}lnW)1qBt{ODYw+l3j3HpNBXIH+^ zXt7Ti47$Uw&UW#UEMd%MLRPCY(XEG!W@jPQZl(FPK_cfO1F(*R(srvMkqNh=(Q;en z|If#0X?~a9!UuN(AMX)La1ltOS8y7}I)ydCwdmrZG+jJYDwIdD!WH%El0o^pc&KI< z55K&oWU5J`#o{q2F|HioS_(; zhdpuL0nTZ97qmSoPieR_s7eH6sFjrISY^Faxf-i{Ha3D}Oav;T-<{EOu{fz1oNu0s zb3PU)9fR{-Pn<>M@&a9LbjmtT+$mXf%E;dYmyBOX=L2VGAks76M-a1(^j?FEPKnW+ zjvvMK23i8#e5{+JF>d}40c}s)GH@1R-ONPY%yhc>V+8TJZl>scT7ePnt7&9||B`>w z*n?*@&Y)T(_MeEQuQ#NxATOM=6iefIzSP-FKSz8>(Ffu49HbjiNziI*M&xi_!~Y<_ P#^`12(%~*k$7t$5V)4}3 literal 3128 zcmb_eT~ixn6n-{*Y!a4_rY(wCp%&XfwQH>wD@ZLtDmH*NNNv4vUXlg2-Rv^iU6dKU z^Uez|{1M*jOlR8B8E>8OM>#%c^T8(BI3tA_&ii%Fb3UH)zMH@Q`Tb7-^Y|)@910nn z!Ace%V^wB%MSLP+O~j`n?ujUhSRcas*pS(#h|hFDbbsFNd~Mv1%HO zHP^Lj1xNY5LlylOjvB@XTu%U;zy2%WHMn{pV` zRM|4UFgOSU-&|4t{*I?=mDXh43RFb}YNZW`(1W`XriR-mg{%ifsD8$1X~@NrF9kK* z-Q(GS_YG@CcmBSrSrw)v6P~RwFxz>NluB(t5=Wr+2sl=cBMfZEERr9dWJ>lPYZcZQ z=1j-&Vt3d}G)af<6PLjgaP&|)cBP)~J?n@&gNwFn2TL0I^0V7?T<|JH9xd9gwGmc# ztlE|kC?)aA%GqYZvTkhl2m3ZLZk@F53~oF>8_QzzK$=N8Jh+;85Kpn$mXhPwJ+x1! z$Hc>f)Ai73IYB0#$ypt_~uOb$p@Wa+hA5hDN{w zIM=4wB(sOIzSDe-3N$+*Q8SGvjn2QzpA=-_G~A~v)~*VjfcGI=^1@o#BE`HoQ>_QA zHEF(N*W`)S&=z;ut68xp)He&EA9&TRqXT(Ghc+xfShwU}`UYk(XW%@>b!;1WfG-V9 z;1vUtc-6oKyk=lZ#5BeYT*T`JE@8&NL)Fz%?p^^YeI{5MuleSE84mdy3R^ z^!>_t3di=vn0>loUr*sW?Isd&`V(+UJ#i$0$wZui1e`}bac&Uj0^X%;FUnI4b|$4_ zAOo$UOeGrYoyPl##?y%zq!TjmV)oq?y_krTNx(VmiSr(7a0xdX46kt|4Clyj_Ad}> z=ojd+kj(mGTz?-!%r(j~PaPep;eyVes&(RT5$;N2m_|aFKg2-W)BS)r`NS}X<6#bW zhWTR*@jt`NU;&GCBKw8nq@?r*J`Y@34V^n kkik-Pt@?4BCMkT>y4!cSUgm#4!A5Y7vurdwgR_|U7dYF>Q~&?~ diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/GetAlertingProfileResult$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/GetAlertingProfileResult$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..bb1395d6790af59f6a1df2ad1c23a6d185d7ca4a GIT binary patch literal 1690 zcmbVN`%e==5dOBWyOx$m6%-VoSo?q;3JAz6NPHztHI!iV2a{{N;F9Yd-tC$2Uui;v z(Zu+(f0S|dT4;r!q-nadJ3I5u%s12RuixK(0GP)@0)5CPkV8HW9fdd&YSA&Nc9R;W zG!zqb&T23;Of!T;ogrP?Ge4PzW!k$&MY_V?U1EsXW`i@tmW3_kDnmG%+a~RXQzz{} zN!YyXH>%v-GOHG8(j}*6THB^8)VZyU$PdC}(4P3hs&khi`O>zzyJ4B0$LV6NRC5}} zzHj*rVbl+7Q@Uo28;&pced!s`xm>rnD=DGZuCpU7zR5k`k`rw_%JOlxH;5%wj9%wE zCgD*g^F6{aRI+E;%k_rVRoCdIZ%fhO+rksX=elh>(v-rnJq-`3D-|xKBGl-PRC8Qz zm>pAN!}p}q*gDwf6DSO{ z;{iPOGQeeAp_6jH zN~>~yAHV}+%DM0rp*Q)$A;L{Wl#DhJ>mZI$V4#2qCK1OJ`4=%t;Z=kY!XcD)1hpHb zuSzV5Yjme#J#EKI^88-jbllyk37#e#xEf5~O^2SLFJ&u-lmXIEPgq%kX`yz-M@RroP&8cNiWmRD|LD1CJ(6DY!X_TrEC2~S3{!^>fkCtO1Op%vbG_cWUtfbkng}F&nrBa$Qr)@GG83? literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/GetCredentialsResult$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/GetCredentialsResult$Builder.class index 98d0460374111b4688058221fd5574ad692ae4d5..f24e634ed2abc4dc6f9257997efd749cb55badd1 100644 GIT binary patch literal 2081 zcmbVMVRI8z6g@9Z`jW6M6tUVOh*)d7k!}$wVi1H5f-{{I+gb-d=xmcGEVJ1yyKfo! zS2{xmM`s*A`=cDs-Gnr0!`Sj+?|tv?yXV|@&)xm!-#`8Wa1D2=IEj@iF5}Y*99*ej zT8x9wWJTlPs;p=ntjcOt!{H`wVdW34pF8%Aoyi5XHV_13b~#+_}7 zv(QUmCoYbv{lHH+1jHJVy|gPTC|s?*L8&BBu|jn#&XSh-IuOa{#_6*xGpX^V!pc#v zv9D;kX;OPXPOXD?@UF&92e-3A;kYzPht6p=La9rOn&ps2BFuZS9v7?xHNd(nWQj z;XE`mH+ZQBsNh?cxk=0|e1L5%;k%r9wujzlCJ*0UBscZPhkPeB-0jye-e`<+~54u7eHpUB~F_2IQ!m+Kq^{t+eoGz6>%!1{nh z0{k%_E#-?|ieJ=NmhvH%7FpV_VHp*D49o0zmg*sv$7Bg!!!kNXV_0ewtv3`&zhmy7 za2~$I)Oy{0fnpaE;wQT(i7$7d#aFwi)c2b@&%pyil+mFs5vMffuH-@0Xt9Dz^yd~U{{f`s#A5&e literal 2092 zcmbtVZBGOP9+A!OJXOl=P zEcU-$$wc1^w%rXInP9u|;mIm7CLbjv=;%!on=N183WCsj)`S5WPo^e+yI$|mT~B=9 zqaG~>Oj}|6LsW&~6%!b{sxVlc-Bc*7g>8B`+BAV)PdZyVdMprP9JV}v(~FGA-NS?qbpDrRw3$8xlmZt$+83MGr220)#@dnx(2&zuCjXQp}ghi#6)^M3}jL%%;dW!Q)|rTW>)uziU*_T^p-IW4DiP)a6Otz zqd3NW7z$&l%;In#qRhf^ouK4$S8`f=3H3Zx`--a=0T*zBYb8^_Bu-HhZqf5OQ$a!&{b!g*ex{DnH9Nhknb|!zX3Bz- zgN33o(-vkd%nDd5vGN)+6tLgj#8$~h_NU4Uv@Y7 zr9fdb_O)uts)|(2lW%-K(5_a2Pw;pf_t|kzoX&dec`oBf&>z)<78%ld-z)=5%2#?> zps!e}(pw1{^yb%;FW2K{O@`YBXNn2xu2*$KWzHRET7OhbIJZ_0nocYB;-+#M`@X9~ zw=SI^)~#4a&ReM~p=?MN?0V6rjABo-kkMi(>4Ia&?pQ0&*=U(dxgO)QTWXioamZ@Q zi9t)}`IZT^YR4+SChXFsPIj6^rdILt@Wua2nQ6!!mx58|+*S~Wb-AicKMF~zPMLub z=&7t{pr0yl*3hU?Jplfd~MU*q&1|# zLlkK3qX68(I8TBl+@|dXA0YLGA5%C5mlDB4xWgy|o+XJ%k|`gc?;Fx*@zY)SOegu> zc8+_*jU@8)C-5v>$TOPAGmyZud;w1u6S&_IWrFuJzswI<9}bZ*_Yz&YtiVJ+=tR$< vk2@f1qS=G&Ss7Nl(q`Ea(}Of7X;XM~G60Wxe$xKJzad=VE=O96)<)qE6m(#! literal 1456 zcmbtU-%k@k5dOBbT(7+fRun7#Ktya&IguzaAc;27kN_r>H1TnJU2ySw*WB$I`HOtj zgao6BuO|Lc#@TCuEBFA~OLuqXX15y3gZS#0*6*5^WJE$$gSW)^_;^?rJ4{cb#{a80?1J z3AoacV0be4cDX0|JlJs?Dw4s@(rL{KVN^CX1?Y&TjAhFgFM=RcT*)w?h!cs+N0%Qd z-3{&gob1RmBijt+)2Ix?%QBE^g<+^#Ycgc(VVg1>S(Aa-(4CfuwhV-E4n6KSc_fY8 zS7y~aNwF8!ys+bTwXZwUZSPT;5%+`}YSq;$c3%rsKPG2W#M)Ps)5U77mr#nOQbTd? zJu#L9u<(ds@ubTfe(x(Jltk@I#B8vC$ZL~^73>602z9y zURp0C(g;Rr9|jF;A`=6&=jc6AL)t4OxwJE*ojm~il9-LtYMekuS7~*62B_c~Npy8! zf*_3ZDoMt!JiCv~PuO2E^a+*`K9hC`$4KKTq;enWI@wsrlK5?mR#XdTRL zA6bK#Ng>`$A?EssHYRbq?>tG?=9mAD+}i^T8-JGapCZa8G1a$TplnSgwy`EEtdrqp jQsHdeNvOzTnp`rtd&Kh$$@l1=C9oWdbSfmLJnfY~htFjc diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceFilter$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceFilter$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..ec086b6b97805eee9356ec3d08c250b55fa2859f GIT binary patch literal 2163 zcmbVOZEw?76n<`+_QoL#C4(|xFAPda6R2CdwcS$6pb}yzgqNbCiBE2N%Pw;4VqZ_= z3?<0Qx~H~vtap5M zI|xGK865`n;zDZXXV)7r-A>~B9_6SxwXOqgHUuW>^VOjurn{8#AKW42XU$*T>XtS@%o3 zYR^l2L)(kv>I>Yjk5r^JKPE^nfSJPyd%b^^-IbvwZ~?=hESJd*nr4PZ8@--@U3o&jWvWLmxXVfz@N06qwwxJuGme zKCXG@Lxck5tuTqw(d4wuyf>^1b`?l`JJOg(rF%FGrH+cty)ZTvoI*{aRlz!LR&W9p ziH!}C^~%SJ5c9Y=Z8VHU1BM6(N8pb+i}Tw&+FC!Fc$m-*a> z1&bxVCdz!35Z;!I^dsI1sNy8gDe|XzPV!`RNk8Vz@)RC_HO4-(cb`ibJFtij=66&eOdHwVNsGOkXoYB?d0w zQ{oESV3fA_k28GPXcDvW8(9;nd*xKwWh{$1FgXB|Y5W48Q={*`kc8V5P}WD6!xJy8C30W$RFOJ z)NVH3p!gOO%^_x$(E%$c@nc{bYdP#%hFxNP>uH*7I;}5_K_u6Bzn=0WKH+(uX!bke TEX#J0XkX4bO#K?p&N=@BEpb4} literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceFilter.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..6dbb0f83fe5415c9f79d4b0043c420563c9e193b GIT binary patch literal 1341 zcmbtUT~8B16g^WGwk_qus>p|;B5I4uYDhG(ghZPdAq5j5O?;eg2OQk)HoLP%evz-5 zm|!&V)x;lVJhN0%;KfRl-nsYgnRCDP?yuk9egJraQOx3wi@QZQShS+z zqUvHvzcFU&+GJy2zL#EVbl^2~Vrl|~ZM_#tlg3Km z<*CQ34L|C5-84u$+G`&W7E51wQEIxWNxV&|L!&|&`szg%;YiljNIUa74UO)orcQJ# zP|w0JGScWMWEOK-m=B&jc6wWB5J=*9b7WPA+N=o-RjN$^ryjML+C)Q#YAfxuRJ>z> z0_8^J%b+P^ZS9`ZF>f^^JRC4_hAmgBr>duOY}-ix-KOkj^e*lRY@ETJqf2h<@5r8# zcCcnI_QuUL_bUV5t(_xSzO8m;8W^^@xE-Z&Hhj)w>dfn~Y+p8k6Uq5etojC@c=a?f zQD^6%YiB>Yr4qBL?39xdE}&e(C`u*V$F#uX|Lc$Cc_6Sn*lq4gwkm-P_q z2=SRp4won`7}PFPmW}|J!WCLR~XXyDJdW8XPG6jofH6s?@ lU(G^a4h3A#s&N>^qHZ3yXo2=E{vDDzC{inCn#*7_e*oq|St0-c literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceFilterFilter$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceFilterFilter$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..ebd37c5c843be16ccad149bfbf51ad342b22d13a GIT binary patch literal 2832 zcmb_e?^7F96g@8lHk-x>tx|znTcj8g=|Zj80tH%Z3mQ^Nkox1(lDy(}HoLgl?Z`*} zBb{liqci>i{!xzS?XJltfssl5koVrcz4x5^?mhQq|N8s)KLLD(y)4GCoW%-Ob>wkR z$EX_eSW_zwd914yhdegaYU2X#<3X0IO*MS3;bE5VmNh)m@K_)t9pCa#w(9~H%P-8A zreT}Tkx}(M%Q;#RnAi(w(2xgK(>k=}eaCTq)3;owDKHf}{Aif%O`{Unwn;mBW+UW% z^N6OS5q98Pwo$g4KHuwA>&P+vz>@+qJ+D{$Ls?5eo*dKX?S|=?N3ubhZ(T={WMtKH zEPqX4s4#aRklu9b%C2lVvJx~7rMIs_QwMcxrhQ;~mU@mi)Bg7sF|-GPW!I%AklS_~ z>22C(v#G$>$~CuP90zvLu#EZ%BlpajG~B>H4*aIEV_J?c9n-1FN0#kNFB)fJI0k>W zFc89uI!dN4pPPa0GmfRfPz3f0{Yjl02&{c54cp9mRr)-yfRO~Nxt>f2qiJjgP2X+o zvvf0&15+~HEv{YDGaHgvT`Jp+)e=64qwQc zui>e{d;;{p`#|94Iqln5(^yCwHbg|rdm-=19|Fsh71vRhu)u7x-y^e?xrFTEEqZp) z)YUAIa-R#_=+bDnf2S2mbH3oQ$bX+P{)wfLQYD4JJA4}9{4VE|sxZg*!u3SYI~Kmr zo;oqsGLi` zA@!_SdWE4D(rO-VVMNVZ3mG-*Eo3_kSE12!fd^iMj$1tZCz!x(vV4j;EQQSD5qiu_ z9?aq+a`Qh51q_8Ttj95E#ggLvnV>1CBVSK6TQkNtTh2WhlY2PL_=`SXAXGVuD18)CfDlov4;ZyOw?YKhbc3hKm1Q%&!-j z<_o_f*EwfYs?7wu-aeyFh($sOUJj=wEYp{;$2`hb0xX%ZZlU!B%uk-v6PE2uSeYz4 zXRs*gb|-A=ya}5+GhuJ_CTusso=n(OoUmKeW0ZR@&VBI@NImR$BGqab$$VFVR}~o2lxMfsQ>@~ literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceFilterFilter.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceFilterFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..421febaff8de4f86df5a7392b2043c4edb9a76b5 GIT binary patch literal 1880 zcmbtUYflqF6g^W4+s7hU5U8LiAQV(q9)d_kl*ELDMk%g7P6HMvVbQU9+(W_ZK zJT)+vK?;+4m^bjuzygEuI*@incns#M;|OoX=Dsg{hLmuWR0pdShTPg7-{+RiovO8^ zJn2*y8S-xfGN_3i>C2KWUOA4dxRS0zzWoh{PZmEpv^E0U=43~nnGkuKSIM+9#153S ztu^T@x=(M(s>4;_35Jn#*TrTkOEJiUI{9?exWlWWMxS}_Iy#oNqI9HMVrVIh?=U1+ z+={kalaAO3Y9--qYic@Bx6JJw?n%9m4wLGGB#gPWvRkw2fgRMORXHGn9xn^a4OBf) zzO~M!qlCkqvUnqHCA@GXZaszZSP+|atr55BV&cM!OCrpjF^-gK-%`B%ah=y2R1G|5 z7;Un<1kflQCw`e+t`gfwR5}#Oe&I?8i`V{esv>rIU@J;cX3Gt{hWeDrflKl+sVkY` z4BfKpiCC%n)=J;7K_bBO8i1k^BL%C{p zBYhI?F2lkZLI1xy#&EEsOmu8rm#%?Yh9jkg->o^yAkc#}OP;1YX- z&MAN7(NAa=&5Y*Oi9@ij4fp{X^@l+acW5+21KhfIsI8kAa? z#xNVh(AI^>dWLk-+NZTOB`T2bC0>@VG z*x%TeYkRk?bsZ@0c0=IgN0FyhM{cN4wOqOEdA_z;KNL8X7~Hk&!KJkpxvoumWI5he zA#c~WJiRHkas(z*9#(wcm9|HUSTab?Gv{s63^Y1V$>=4N`6T zZMuDCRe5qP>a=8VlU;D^zGJ%^cA)s&zs%}QMPV8%k#gHI5HR2OJQ*}yI}9Z~Xs$Yb z$LdCI)KOM@%d>T0JJRwa-Hmi;ePAn3OV9Qkc} z8Bm30c5~>49Z%rcJp%KG)E^A_L{f=JE7$6|rMW5x^6N+ia?SVn z4J9y_W?N6KQB6%x|B4h3=N{+i6+1yM=^QfLBnUi9r##8$NM^Wad+w-($usI=BB_xi z3#3Oqr}afTStJF?Tb z7F6KZpX4RK$4iI2c>8$S-K8gZIYGH(l3cFza~Z2~VIO0Rt2mrdfKh}gUt@!e#(01! z>}{5?FZ$XZ1Yg<%|1H7a-3OjYH4Hy>5WKku{yT#Iejj+|>M;Bn%+nnc?}vVI7XCu{ zlLz#@uGj7(8)JlJK1PmZA%?-S6r;$}j4@i@so-fCg!CiP?Cb&lUd# D{&6NO literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceGeneralProperties.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceGeneralProperties.class new file mode 100644 index 0000000000000000000000000000000000000000..c53a11e26bc2f480545bac1adab57ee1c51630b9 GIT binary patch literal 1817 zcmb_dYflqF6g^v7x@}jfJVktfqP7KD0R<5x0er;B!&uV9kHdC=A=}wzch<-^f08C7 z7)|^E{wU*}Z3}Iw8qp@b^VoCly>srJ-S0oXd;>6#r8F!|rjWtCG^Swd*?n!MwVBao zHi-vmn3&Y&VG?sm%o|9qhQcj#-+=W}O75?@EC_gDAXDanVlF*M6~!L;3VjM+=m=VBI&NLiWg<@e5!}#5 zqx&1^*19Bj8Z~`JfO8*kyxtlV=tJ)OZWjMf3TBz_vd~pjv~!d?2*pVGm<(QNo^WULQ`P~eT7ywjRuX0 z!ZD0b5p0C4b`0ckm8?|*;2N&eie3@8K`u0ThE^J97LE}6jINI~kKvSWH}TCne>B33 z5wEYKpLhp9bHDU+ll%g-hXXRJAyAM2S&F Y8*Njd^#uLnE& z#WW_>ki{i6!#)S(lL2U@W(^ zNfXL$ohBSvvm99o8dd4tR-sfzxi!AQ{FESiOm0;4wH-zy)Pp4pJZ>T8M%>KH>Z;XnL*Vp5>vF%H zQx)0tue(iO#|gZm;R78XVok?1p3`v@FY1`VF&(owuHz-V%o|U!g>OO9M*WruoQtZm z*NJ@w+^pV{HDANJz^M@6|97Oo@&V8H?$D{W-+^!0Mu(OcS=N&e0?U&X*HK?LfyHnE zcaD{oLN(pp;=zN_<4u0ir}$5hKuo0s0?%`mqN3n?YjEo77&Z$aN@nn#KVpCS$uX;kTajqcQO5)wRLfg z}oe+6M2=szcHb5G#Ixp zFpe)nTob*xO{jZ6W@e@!wKmx+!0Q^g)`)uBjcm46U9G~ z{rD+=nhNLu+M==oK2Q*O7>x;!1V|PAv}`YMb-PP;@2dPOO-wYJ z_yhb=#&b)H-L@vK+7EMIGiPSbojcp_KfZhea2IoVSQyLU5XSSEz%4zyt;HQJ?rJfa z#l1XCjA?N{i>WN84P@tI>6Jxjze2F8CGgcwGNOgl5iK=?5cx>JkQ)=7O%1z}Kp2ji&&q2rT<;(ng7lAgV?tMAkCc#vC@+bokf zq}PqMO4F(RHP_S({k;57*sax}(Vzb(^rj-w&?oB9$qIQ<-%b#ko~xE3(LS@A^%p-) zH))^raIIeu$SC+Bo z4cts?&+efU+wUkVo3Dhc_@Jv>iCQ5;!B)L{l7>PgL$XF{9aQ*&~@Pd*rsNPkNiqOrr2sxO;{gHb;YF*T^RrAF3v2 zDYZl3I?hpA`wBRZ3tX`i;vylm@i1&JA)dpwww>Vdb(~ql^Nm4$dyE&;R4Io_yqztwVBHJd2MVW^Rz zVO+z6hRGC(3L5TexW~}$aVzjV?pS=;bUtu~*CorX8C!uJ)Pzypc1-D+7B}2LZUxde zUYf#@+%ajxinYP3fz209VQ()tIE|4a&M~B5P{@x61N!Bey1~Pn&Y*ka(9fRT1kMG!~`N`BU!!Ul({e8tv#{D4*}`LWeXWu#rfHM-f>J&ms~Is-K}l<-xG&P#Lc(o7|EbD5IlI z{L?F)VeE|S53j(^P;DTET~|vtO`FF*2EyZI*C_|K%`lWL9kp&QcU(jZ&!!#|^g^ZS z6>Fi7Y9$;|xlkVmQ>8@hMVcAZGbPRMfqf5`U7|J-3j1-H#_9b9=teKi)aE{F)#i60 z9_Uk>3qR1Zo-gd6br&(!$9Iuv5W7h+Fn|~a>A4&t$}sV=p@wea5T&j`jjrMv>0o5~ zb^51tJ*n%;gc9o`6@uJ&NxqfA=Hxwr+jjFX(UfkSZ1OJBaO~RrQHo#0w2qx+q4#6q1-G<_xZ2 zwn^tfl#-Of!7xfOilz#~@S$@#n&(5APP9pgl&0tc0A|op7D5p{r>(Fz!Nlz$YZMj8+VMkYh$|z3tPtA zvvJ?X4ukz7mcA!KhSF=LMA-6q6p4tT911rML!n&J92rPYnBM`FnrKh&uOF zDyg3_Wb2JSgVhQ=(ok+oB@W`@K!iO$@F`Ml2QK&fJd|dh1TB3msRp}gcSQT>)*ESA zW-6G}t&^T~u2}ZqybJczGjAs?MdCl#(`s*~uHMXc@}79lV_(y!Egl7N=!%!p^uW%) zd-vf9|Hv6?-B_8P?aN3~yX-0zXs%_Th;mM=8-&8))7MTbj&v~WjYp>MR}Vy_JHoVK zR6-e*5>`YmnbPN@v-SMgSoWsG1a5cl;oY?<444RET9?`Ls zr?VQyl2#>~n*=MkM1JWk0hh5(GpaDIkevsA zL*~l@xVjX)hO0}!*+uaB5^w?6P)op@B*I+zAF$q?V#VO;z#)6K^BPR{^(6Z-vg82; slTAW%i_2}yELXsdiBJnS36jAEZY8w0Y22j8A~Fj_@`@ABrp0Q10GxfZ4*&oF literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrenceRecurrenceRange$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrenceRecurrenceRange$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..3336b7a9bad1ccacbb5e827da0cda8d0a433b234 GIT binary patch literal 1900 zcmb_dYflqF6g@*9+m@D>f`V_Xr4L|1d6-~K6f~ODYAC6X4<^&?2t&5JxI1gYztV&T zqlxjeKgxJ#TWE!-m^6fW+`V(oz31MU{`mRj8-P{ZO<@rE6bdLNkw7VllpYe8)vH+p za|Y&9w9gwb4J7v2`H+aZu^al6JnsrMaYRP9Kg=pF{rZU~Pd{nT-Uw{COa7xdv( z*>aoaUSJ1JX*Tv9t~_oD(+$*KpnUTgmyQw+cPvr0c0?nv#Rix5{-&@3&l60Lfj*?ALlfI;yJ#ZXXaV1^H zH*lLFUKL8|qM5xRSgt2b-gPzC17Eq#t^GZbZ66@#H<|F=AjTjb*H)kwzwsA!HavPTnboN`D)j zq1Io(qqg`h_~-RqVJQQv40Ann|84<>`7`<-zYL?HW`UBn*`}o{Hsp!-f%HVhbt-{v zGvs^*R7z0V)1gXHQdP^4Jx(r1`$=D TjFYZcD1)mxU4cc6=aRnw9y0F~ literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrenceRecurrenceRange.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrenceRecurrenceRange.class new file mode 100644 index 0000000000000000000000000000000000000000..6c6efb5b76328d29e6c0302dc591ceed76abc20c GIT binary patch literal 1393 zcmcIkQEL-H5dJo~_LB5!Y>nDzwN?}Do7jO2 z|YuSUVHZflP$&K6Ss+>MpU|~)sc83UB{mNcikVmv%*k6u*%4R=*dh{ zuU{#Z8g68&h+(QQQL07AC(~ieW+ojRj)tyamWQp8T+W?Utdkv_1>g#5G@^FkD#>Z^cND(PfY;`NSLcF@v*6ksa2eNdeayT~ zn{ZF*C%g}*SaNuVN#+}H(HrCFrznyIlwCA!ba|F;^Bi3n^?aiqZV;q^o7g1n3UZ6| RZTdX2Jygi5}uyl_a6BD{O zVW4VY(xh?4zzqX884NBPE27C6jxBE3?`_Mq<+@c@zL4v)47otrzG^3A73ID5B;{u2 zgcRy7L$X*}Wk@Y}4Vvv=6q47%<{I}`>@_#S^c>q=wSA$-@nlN96#+5Nhr(@epCSKL zO71VXb`Wq{s4qHR)7lK(uqmv@mb8^`JKXX@wHd0wTC#;yT-ws%b>}T_gf4$*3wLXo zJE8A$n%2jCDP+U@FcNdnO=`v7!OrSSXB+&D9lDB6{H%x24C}?cPLz7b(51=HawxT_ zt0EBO&jTqvWh>#yz`!)QT<1z@gRE|L$Md;mcT%l|Fi>7|WowgM zUtmX6eS*x9##4X3-oO!kGC$%rzq`YoCI9MAocU@1f0Sd8tKhvsnwe|2s}Y?SZ}U;LE>e( z@)^k%QaYwv$mnRaknJF!p#uO#q)?(?VLuYzs!E zqu3zQwDTUaxKBDfz-i3m5*E7nhhz1!R0LNeLsA%}Jqaq39UV(FE=O}FSqjQbQt_CC SHbiJsxICI8$=JbiA z$}bMQaNrJ;AQ?#4A1SUQ?g=+c^f1w}d&s5ILUHAZj&~ybBoNQI3`R%7OQJ|n*mU(q zDnI;4jjlDCY5iOMKi~bD01GR)J&}_Ne`+i)?cV=svFMBUJP9<3Uh0HNJn4vPgGB5k5!qW`x85REVTsM2zr8{lYZOmgXZk}9CA={{;Hfg&~eVV8E9r?FsC>TDw(D?=_SjDvo z`T=Qa#IOyTRI=vF)i0E@aeb^(4jV+t;0A7zFHnL_@^yN1G|pp*My2tnNWS(PpKNFW literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrence$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrence$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..815ef7130aa803339f982d26417a605760bda782 GIT binary patch literal 2614 zcmb_dTTc@~6#k~SZRv5Qzm05QuLs+X0qrcX4-C!(Z{mzo3bY zMib++KgxJ!TiXptY|_5WnVCKFeP_ON=IpQE-+lnNkGV85m`dXoZl|E)P73{UP;pnz zXi#xa&h9C=ui$}#hYB90X?IFNNx@@=bX7lC*vG%RtMr94tX2%CrtSNdUo*ApfvpQyH@N2bV&4~@wxpYM*w*R5nz75PzQqFq z>tMBw)SgL9qDc$0#y3s7>bzrE>Yib}1xMhC$EIzHCk)YCeuE)acB*ubOvSYMvR~Wc z?z+BZ(avDSF?4G~cTKr&ZpOr}=`kp?zG+pt%b+gWHh0UG?s=R(yy!mI@g_Efx{&K0 zt|Tv+tnzK$w**C4?g1pj>)b!;Bi}uA=<=hhzAfuu!}Lr_z>IA>LKmiEdkQFfi8U^S z%zzeVH5`{~dfQbi`<`%W>j(RMym5eJ{m=thL**M3ZEx@Xz6TM8ioUnO#kXYfGtB3D zfJ^CM4!!s_$9E0BV9J-5@1$!?%KoI_DZ|Z93!we5lFQr^&mB*w7{O@;&s5A{R>c5L zsu;wOiea2$IC-Q8GQ8|{zoVwnHDo*23^QG$F)VhC@%JG!475dD+1lfVP*7%=2r>Ns z(K1YS=-+D0jokUdw6q2-^}c?Wzwu3%FFW?KZ&?i4a2sp5mGYs^*4!e;&gd~kf7lHD zkE4jlVxn0@)>B}qq{t?~WX;idhE^I`MmApf0`@6z8*MrPd5qCqZ8+d8F3?IIzDT1y zyhq>>vRCBc;#WjA3&qcf))A97UPnS&rH*79d5i)83W%YI6mC$66BxxLE>kFyZKQ$N zWFu@`qHi+D0h&hw-uWhPUqO=oL`pJ#q{9({0@4A*ZJfZJ5M*BqvM*4E;VSt`HL_&s zcZ=)Cz^CO!4#Phn_=m^9OTiDr4dj`KRE_o=J7Cmo+ND~Wt(V%qI?cR#lmOA>WE64s3R_IvJR!#zS0Qdq`?f5m?dq>B=Q`|J|E)0(o`==d&M9jF-o3P le4?eJM(dlwo{IBi$EXVXseH~+R>m=nYuOYfdK%}lsXv)>*!%zh literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrence.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrence.class new file mode 100644 index 0000000000000000000000000000000000000000..a904b523f557e0578b0a0719ed2fc2ecbae4fe37 GIT binary patch literal 1726 zcmcIkQBM;=5dOBbyf?vcAaP5*^I zMH3SeP5c4=DC6t_mXbagTQ9kp+1dSOcD~Hc&tKnu0CI$9(p`z^GKTYr8BF$lBlYVe1FMIV2s=cj)wyb=#w22IUUnu? z^Qk;O1G^Jo@!FLNzBuMdpv_A;3X{ka`_lADz_36o zmoy`t+dc>Tk{(-34;g0(cSt%H2e5>@w4!N=Ws<|-ugH9+%?t+Mg^}PHtc(Cp-2^X< z1kd5#2ypf$cx43G#wzY#g4gMu<|}+h?)^FP22VqXWS%tefEZjQc~Rs`;?j6+bDCJP oZl>F~md?gn%2F2V1j*nbHb|SWk4SIQpCvnoX|jr`RUp0m8|s$TD*ylh literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRange$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRange$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..a2a6ae84095c654fe9552a1518c18ed6faa57928 GIT binary patch literal 1916 zcmb_dYflqF6g@*9yDhCe6cl`8EqwqB$}7Q`C~7n*)lfv`gUNO~!jkPQ?#`O-IVw$FN=W*wpd(WMj{qgh5HvmgmPNN@%G>Rytprf2ZS~WVRRBuYd zw1$~9jSCtK4YLdy7mY`zD%4#|7Au;qP*SfRMd z5MOm0v~8eb3tkPHb?$ALbteRJEz{XFJzI@ClX1CY`$YFJu$>0?7&6a<;NGfZ`aY+H zt%~I~jlIALnzqr{7pC+~iyLkr_X6n~Yo;wE7pAay&D!COz~O7IkUP%)I=2GPuRh9zI2-#`+Gds-asWt)K%dbHVVB@fZ&sT$aAix1=sPsU@{tz$paM>Z5M|1F zDgv23hRlX4FkB&DmE3i*RENL8Cr`o868zjB;FY*1;cwt3&8g_OI?<1Rh5qIcsYnDzwN&Ru{+as`S4VzVCsG~lF_cox6MY&` zcqWz9&l&RdMvuX1#v#EfEvdx58TLhT!240QP#o~6#}jGC6Q`pGlIS|EARhW76Pcm( z!?EHz;eqgDqen)kew$0Bh2km@-C!U>6Nz@L^dK5{L|~Fc(8L*wQWcbBwcc2iyW9V_ z=Z_SyY~I~TMT!4Qed(+3oom9yP<-Mh($tW0H#SKiUQ64#r~gs^hxXJk)H+6KITSsa zO6vLxrDDysj1_UrlqZN2;q&RV-!!R?hX>=4ZRP5|NOfD-)0BF+fQpAzcplc^F}y#o z9$Kb*4DXh`KEuW7oqF3p7J+6soGHh0?m(l5M|Ag#^h3zeOC`%Jsv7AP@=zr~+0e)* z&8+vq3D~zRY@K8wb5^iHws#tUOQ_O_nu5zDXTjf*`#J|+UkF}X2+q%gs|&y-T*1`| z^A2soKEq}QkQXUM*g zlKbf-Yz&^)!Gi-uqv#|jO!TC{~!T-ws%WoMIDLYFUkQf<0B zZ@3fsKBonJ;8h_j-lu^E3*F^)zLmh!`r_#dU$;Y7(Ww_(3eF(%$Nea@lA}qP-Z!Dt z=B|i9kWaHxddgP9lYxOra=Xlx(neX${Ep{y%RWrC=EFdF)#aUSK2YC4nkUz^$qcXZ zEj>FSGmpV6d!g^}XF}K7`2Q8gu&#CkQw$?#z13kUrI&c1o_m4H;vCK!xSz!XJj|jU z9a(hhrVAYmokw33!^;-dHbc3EX#4f>*Rfx%ZE;5#Ai;;4xc==u!|)mN559q}NUcx_ z*Q(Rft7`Z8hfw%@$&*W=>oN>BKZ|YJLsl4#3ao50P%3>iOxp25r?40iV; literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrenceTimeWindow.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrenceTimeWindow.class new file mode 100644 index 0000000000000000000000000000000000000000..655d5910ccbd4a8cbb54a178f68020997c003486 GIT binary patch literal 1459 zcmcIkU279T6g`vgO}9;~ttMJE)v8G!T%->^R0ItOVp63EDf%|q9h)he*|0mSb-xNFQkV|I$TUq&9= z#ylwEVG&J+;)_`No(LK2S4xSn?ei!S5p4+N_2pPFtancMNACDs9XmZ8N_D)?U`3jT z`V3IggnJ(-!WN!NCG|6gY_m0B$h8BHRx2H;#6dhBim=azeiAcqxj*2cH1pYFPLCvI z?snW@>`Y=m9!tlYDy~EB3MYv5B-WABV zR9^6jO5JF-(!QWL{QKoc1h~MIJ2Ocs_2=eA2HwA{GE1KLz++#N_~l*@hpu=j%_;5u zo7Rs^pD@%9V`VyGAR|eK`&_9&b1ef!;TQC9gHSkpzU{Q*NC)HobRtN*l>-s!t}sm# z*{I@*4I8UA){LoOm7#YDhh{Rh7+zmsXol+i0=*fY2v;+_T~Ok`ySz2PW4hxO-To{x zMkpF(j8=&!xyTo2g>(d6X_`6Y8TtI~DcIKpb~OQ+#VR()+GhZ4;u_897lG?!7s=m{ z`9hl+%*pGif68ZWc(@t;E literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleOnceRecurrence$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleOnceRecurrence$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..fea5c220d0de6434dd92f045206208f62de6920a GIT binary patch literal 1925 zcmbu9YflqF6o%jFZQG@lnbD0*wR{goF}|#xKiufF;{m+?_SyUui;v z(Zu-KA7wnVEl?p`l75*pGkfMaXWw&X{`~#%3&1pHb!1S|@f0H|=on2Qtp**2n$e(R zOwGnLjBA+CXTrD|_Y_({N0&V^pMPi=7#UlrK$BHXM?Y{64yZ zd=s;_u;m;>G+)?ch?U(c?RKu%g0BX(E$(fYTTaMyEz{XFJzK4tn=!d-`xJRGu$?OR z7}9Tr;9l7=eV@~ZFDQ1Bb8C ze4Sf?=W&`1H^G#CIo~F0M*Uv0%D2tHk(AqfyF7+Z`SU^-+Qhc}^1yl^RG~I)-zLo$ zgm9%PZCCgjrl@iiE~OIPXbow(9yiQWSEC&G(yeVA?DOHq0TMI5r3%Kdm~S^-f-#pt zuegC{@g-ZeO76(JZ3s6j~}3*#zj(LNARs zX=RXQWaGsnuy3K;t)>(31bsA5Hym&qgS1kI@6f0Y?-4vgHmeSoz9aI!SUN-Dl$V{jV!vpeFYGlb$n_PxZoWoBMe)ad(nrf{{A6&!-A1Xx+6qK}uCIs|tvOBg@HnU-OR_I^w z*C+@D1%H4)O1!g;qzMaxX(0FBnK|d)JLm5F`u+VUfEU=Qz{aMHG9DW9$e1k)k1Hr* z)0k}wPb{<;tT%}ad=W7?Z_N7sL`=7c!HDhLI94E>Q zbRc6%vw5vlsJWJ*qKq>a^}6|g~+9PZ&h`4S~~K)y-;0>wovQB+BzGWo_I;yFYC literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrence$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrence$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..85a511f0072de457ec57be1d9fa405a4dfa46943 GIT binary patch literal 2594 zcmb`ITTj$L6vzLw>~43LauF2;@s79`q2L|42rL*iD?}g=Urb7O(7|qt?Nq}z@x||; zi5rY2#%Dj2@l1DRD}+c=UV5g}ncq3{KW9#V{r>g?z&*_8(1o!aZsJxJI&NptsUAA+ zs1ZGM+*PBy8t!ShuVGxngB;C{X_(M3$&js@J4>7EoWEh{scf0=Ov5&vSH_C;g!5{G zq08e|;CbA!_%eOq49_c;TQjx;JE#exy5pGAGc9hof!q$HZ#*-FBe`SJh862IuLd?( zczb8L1!|2HlDy=ksPT2-RNeOsmDmne_h`gUPYOrKX@<6ZVT~bKcB^!Xu8MH@Vo=-Q z-m1A_(@amrwM=`>^n`kEPA27R;WKD+fv~IGW6+;C4)@Bo>HC~MJdGXeU=vM|F63j= zCe#r#RlaEkwxsyx;u9HO<_}gzAvQR2@V@21Q5CQzd_mgJI*uz%DO|_bK#5DQa4D7e zM%1b0dfYHuOO0~iOSiVVv&{z^8%WZR@gG)0nXt9y{XL?>8Unv z5j;WmirQTIio|-c^aX8oB$Z9okyci#Bhw=HQvg5_NtBSq4GM7>eHg)I3PpMAZ4jH@ zh>c71O$FIa<3#9pq3O4ysGR;pR(bqHn-hcrav|at+HpIA?ASwggvu~nrL{_pA+q#) z#q~q*Idzcz`1^z(KLoD?-;Y0q{2};u(&qqvity8i;8h;?;|nBdBPpBYCQQnA=r4BB zQ7IL_AX!J7vgtZf%4X`&O06UHB1Ia^B7-^7rc5Hwlk5u-|5uvoWoWJxCL~G8Q;HAo j>1fdVXgH_iJlTG#!cHom0m{lCrf_X2ONpMsz)CKKOt!3ejk?lt`NrAE&zm3~p!1?yRPN!r!8a z35h2D0DqM6PA!%;`(P|hdheZ?d(O<9y>oy5`t}3B6Ks@WVa-Abca6DcOs$A|8F{Q3 zvtGpgA|5alw-OonB4V)LC?%rpfXA_j87!aob`SQ2c+XIEkNF4g1Y8|DO&v*fxXCaR z2``Bvp**oi3xeUT>xEtCBngtPbo`#;I^v#i!bG1WI(BxrR9YxbfTnjO{3H;DKIrWY ziH4D(q+QBdcE!F_e)y5Wop^)RUpC?{Je5l7XAId|z0Hu@4t=`Cj4PFBB;AgPTD%j` zOw|oN9<+HR&3G`G(?^nI+M4)CbdcFvJx$>zO<%mCjSFBMk+Il0D^$$rU_zppq{RcoJy(?&W5fM4oshO@Y+@p|m&56JnU(OOz?;wu~he(+j0S&9w{_ zagJQq3nSt1;j*)x#5(M@dMD;tOf^KTcZ4a@*hUpsY}mMDV;VCyD!9z>deX`{ySJf# z$nbnpK8DJ$i|lreg{K)_j@9#HF@qs^HWfULg%ogh96Xl_ zuHZ%rI5!SnNC8_|#LWSCna*i`rSHhUJ4M0Z*}0Q1k%Eg@8e~5vEsYqK$tIPG7S!Gk12}E{isBK{x?lG&O87B literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRange$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRange$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..bf0f43a246ba4d5ebb209a5e07dbe579d9c8b2c7 GIT binary patch literal 1908 zcmb_dYflqF6g@*rcUxLs3JSilmOg+51!{sZQPgNsOQZyXA55m(5f-<*xI1gYztV&T zqlxjeKgxJ#Tj&Z=F=+_%xO?ZEd(XWy{qgh5HvnbaPhkN06bdLNp`(;UN)0+@)M`e< ztcJN1?eiK84f70|a2ijz6bz%4J^q0kHg|T6n)EDZXN4i@OYX_GL*jwuSn?r5EMM4U zh_AX0IyO|X98nFLb>VIBx*Y3d0TLejt70CAS{yhYq-ZSf8Ol6?WI?RFQ2=h&0<*V zal12Y^%(KEHGT_!t-dErsiDj;8{zwR8!*hB)Bog!7ztGiq-7gzTDoY1o_HTvo~XJ` zHLz`lT=bT--Bt>bi_cLR79HlL9ZQ#X&j-QK{Hd<;t|-V z&~22)L};AC1zM-u4!DR*v{Q#K)2I%=3E_cBb-45yeOtxSA!04W)!g4gqKi0A#K3LD zkwp@B=zIzW3;+NC literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRange.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRange.class new file mode 100644 index 0000000000000000000000000000000000000000..e737499285702b4b14c8f73cdb1ae6ef0b3c8bfd GIT binary patch literal 1401 zcmcIk-)j>=5dJo~=92VkY>nDzwNy3_p(~LugRd$r7y{y-zq%FJAaG^MmQAZ}qjz><%oG7MyzZ1kgzn?`} zPx;|MOOwce{5UiH%%uLVRN9c1I-pi?LSYusAOw=Zb6Y}MF+HYp5iF@rq-?njak5aQs_8_GmuAt&!5uS%7cmju) z)IUq~NML`?%L`l`U#9);DFsHLJyDFg9R5ZJ&-l(4`A3lBm+LjOxMZvs*u!N6C&MG3 zwXohNXAs|pVaqHFLuUmmYmlD>{I*+=jaRz7B4W)d=)l&brk&^dA5L(jpmIOrs>u$(3MadZq&gohU9P?YpiWS U?y$bgpTo9;GF#=L#yz`zVSy~>r+CRwfYj^}gBK1#Kg!a#YowcQ;)(%3+PCpWdh43&I4 zk50hMV=z~}(0BM#q04OQziMJ!*SUdNhKaM@>8Og*6&|Q(UZAq*MW2CtS=`5iEIQGZ zMYnEx(8bVw{4FuOXkS$`th5j8pcei(^z!C5ca#BAd#r`(-@Y@9pE3XN`S(Oxg-WBnv5~ zK%XM|s69s`iz1_#EbfDSj?&IIlYm?3r+&7PfD0I+k=}ffTD^Ijz+)7L_2$wS#5Rhh zJ;dus=$Nb{rK3?t`UrW54glnlKmi#Psjf;Gq(A;T#v-=<24a(quyF~OiI2p?6?!bC z@Z<13e}hk-fS)7y`BUJvkH_I}V1(whIB%Nb41a_9Y9AftQgIK7I^sH}>PYICuEQuD zDb|l9?RDx@;|DgBAvKFreK75%9pn5E4{E0(G0zR-NF@P0Z$zI#uF;`giyR zAR$cxi66j^LR@D>U8}qxN~GLtU!QaD&9R-IzrOtd@C3VMSlG5u!fj*j7_(Ev-7@mn zHs)Rt_lsyU6ko*B_e98GzfwwsZJ$Sxh-g75uP;Y}VZC$8KXAwA>e%V&P^#lS1}oA$ z)aQVbCfwUV5w`GDDyg3_WSgx4L#`co6s>fm5(n{UD8fD;`bo~f<^F(&(#)s9oIa6M zxzlljku#3{cqAQfqPPyZE1V$K<5)+|K9@=h#g!|1?uqbXUmOYX-k)@Z8;7BwxM}N1 zDlhm*oo+N+X&+D={`v3$0hU*BXDTRF{?uGz-o5|SWXTincTJbSee5xkddT)eXdlXxt4*V>~mtcK`0zPTXx!Uq=Qj^G8QD<%7KXVzA)z{ zvQfn)8#Y#LtQk|mDnobq8)gc%7+xFT;a%qg)0`W3RpYR-I8G>aH#Xh{mpe^tvsirBHb3S*VRMc z)o~~VemyX}(&+~SXE*lZfpWH<(kyiQ(g|X{8|%o~l)arGc-#%N+E#s6tH8gLdP=MI zD*59p%2#?-pxBt-5Gbt$Tl6&DQNHZPgPsiUxjm0PwNB7?y$v^1rk!<`^p0ZK)=#nW zn1Mj`XWy6Mn&(E5_1Dwl<3~;3}Dx_@^DsRbcH}*86xi&ILV7+lb`}X{(v|Mhp zABy^PcTd z@jLbZhk4Q585XVyEafHqnC!#TRqo12-w7gJ#UadC__2yMR;s9CQef)C+o+1`ST#c@ z1(rv=c?52ZICJmV@Rm%%@?8I+^GolM>}v}*1Qv4KkLA9%M;AZQe*bQp8LE-G<&`oO z$|tc3WjFAY#Ybp zuV5Lcg~Vy9%%z+|d*7i=#2gV^PSi70H$&ClqI~}~>`trs0;QKIwua0pCInpJpTJeB yyPRX!GIp8Co=@~KI+|GK_k(Y-eIe;9;~47`q?x~pS+3J*(!Q(P)O;DUb^BkP3|v(J literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/WebhookNotificationHeaders.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/WebhookNotificationHeaders.class new file mode 100644 index 0000000000000000000000000000000000000000..85a4bf93122b54bac6ece56d9e35bc656be1d211 GIT binary patch literal 1312 zcmb_cZEF)j5Pmkf=8`npn)(*CHr1+$A3VelMG`6+5QP}2DG@*JUAE2EyW4QLD-`@u z3PM4_AK;G?XD^YOs2_|yxSiSAnP=v?*|~4uKYsQhW07=1o~9zDgOT85CvCNR$lr0#Xc>B4nd%lpsV@&=u1z8scIS@U z-9Sa&*n}pM-tdUr5*`Ro89g>S^KQ%gfB&qC&i`GH;tBvLyD>C+fGoA)j z*Z9(d_q$=Mx76oaYM*8AV>~j-pYCyTKOcIEv(spX&?|r{#uNOn@m5H^C z#6YH!n)x`6mCmjQLCtUqR3bcna_n_Xs#UaiG#12vxhGQnLfA`^R&W+86_l~e@aR83 zt;M>{u)QD*jZrp5A&(Edm;Rv$G(&ra*T2k4t2w}Z8fuq@oFQi^lC01!hcj?!CFW#V zC5uOrkzBfa4E8Z|IY(| W<#wIq2E7jHc}f6cWwio|sQm!O;bLt7 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/WebhookNotificationHeadersHeader$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/WebhookNotificationHeadersHeader$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..e4685fc15c12e2dbd6c625a7f95d91f313fadba1 GIT binary patch literal 2018 zcmbtUYflqF6g|_|wo5BMQR}-RmR48+@l_Oo;ImdE24noRErSkjcX4-?=)cm0Mx%-G zvp>ps@3xi#8cF(L=g!RDd(ORc?#$0$U%vymhTA4`7&9>rD+3dkGsyB_VuEKhn3&|* zq=6{|S4>)u8JIS3RUqNoO(}4&x@K?KmSelGttIU%_jN^JAdn4T>Sfyr$>sR7(ABCb zmsOzZj+}E{Pup5~ZXj?X3V(0e-A$_&I*v_#gp=H8Bcx`OtMqMwcyV-@s298y!X2zC zSJuL2UHZ>CfRphWwzF*eir1aZgnpxl$(Rq7vm$+g>;u=8{(@r%futYzstvDct%pw7 zRMyG|*Vew>kd_zf^-u@a3t4~Td2ef;R;#KJ<$Yh;1QfK*a0i#toiFwWRpH{&D{|Ei z9Zi|d_6aBOs<>O8(f&}o^%}S?kXn*j^PyV3s147TJ(332LKtYT`TWDW9Bv2DX%)7& z#Z%j-h9azO{gJG*Y65e`KGP;b;R%>aUg$UEUB&Hk;eXnWb8j2CA#i!GQkiG*4?R-2Zt!aiTV3zaWxp3Copz({Xrx7{kEJ9H4oM?7?V{MBA~)|43mPhseVsE665GpCLX)AxCLsClJXo8nbN& z9LGsoaquY`Ie3joV`K{)T>gUCi&A+L@fH$nlP#p!8ZD%^kn@BMOd^3PWN?MjohIa~ zI7bgWvkkQoJ8XoF(>OzXbf`E>|Co2N!<#EH=?`R>@gx0+fs;2QhzbTU(*v37Lgu0q z+d8T96hrMp@bL(KwgYdJ%3Q)u;5$fSt_RrY0vkIdVBlf;3{Ic*5Oj(D%97s2vPdj< z|G~0d)W5J?zzA{iQLT1rDSU(Z@-qgi<4+w DhUne6 literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/WebhookNotificationHeadersHeader.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/WebhookNotificationHeadersHeader.class new file mode 100644 index 0000000000000000000000000000000000000000..f456dd9b05ff9e9e33e971f8a624b039a5ebe9a5 GIT binary patch literal 1591 zcmb_ce@_!Z5Pe%puUAe`L=-_l1Z=Bv3MT#mVuVN}sU;Co0*lwX=5CkBH}KfgR>a~B3k!(9E+GC9q_tf7%m;~L+<)K*mJj4B!j(WhJjdk zkx&)xYjPQTs{`Jtz!3`sP2d1hjOUouJn@hUJFiz$IXqh8OaxV6+7BCYbAYmt6?hRKKa|*a*x93 zh%zhobXqyjw@N^(+SYuNU>8bzw$(mj{gl5L)$-+~lC6ndu6;#q$!&)^^2CNT{hRw& z7Z%L0F?3bpg^}o(pV(d3u?p)uM-4MV17#7bH^K}_?BF^^99+SmgCPuBc}vVyXwbB6Y7iH+1fW6O{ywSufS$itNFj23uAO+6z(>y-QZ)SKGTmWg0#UCJ;6g5CocnDBoY%OTRcYJSESG4r#kT2 zR`7`=#vQ^9_vGpC!87w09vhRGY85k0d6`f4J2LN2V3~YaM?LeT_#~!V-bztG=NB)$Yv)$9H!#5=p2cnMO3Om1d&X3jk4oOizV{}1o}1+a))6^vo7f_XSL z%2=>b!GeV=V;I5J3L8IJ__@N7ISbb;ToQ^PYDe{4tpfjU>ME_; zD|9frqO@Y#CuuWH!9p%ez+~1PnhP&mlr`8F2uD9ui%Cxi2l76BXw{<60 z9#asg-t&DKu6k}1NeMO@$q1JlLsQx&rSi7iabr(2o}0sy1U4E6^l#4&jmxDs z{i(3eclX5o`=GxgSnnf=`1D%rYt@&VDpK4Fw|zg*$?l3Q+~AH{muBAyIC*(`K`0$} zVCt;Kkq-JB%y%Z8z@`4H@hCrMm_2Q&VA%R=NPTe~{yfc%)JlB8h+~0aCd)mUU0&_X=VcG9()%h>9-@oXl2707!dAm%6 z@>#4x*$w<|?0Ew9>;&hcFA;Ua6w4ZW9M*#MNb?QEi^SwO%h9B>juZT@rUp2PZ`d-EPqQ?W*9a`Iu9?ZL zwU26YqmqF$I7=>{5u8IY;Xlau<4ptq4)m=HDAPZ-TnwXi(}yc literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/XmattersNotificationHeaders.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/XmattersNotificationHeaders.class new file mode 100644 index 0000000000000000000000000000000000000000..fcbadbf32ac71c9ab308beb76de6ea3d048554c7 GIT binary patch literal 1322 zcmb_cZEF)j5Pmkf=5pz2YwBCnYN}NeKX`~A6jO^D5rs5D8-jk^T(<3&yS;F?EA)%M zNkJ$m_yhb=;_M|-6GbpKke%7tnP;Ba*|~4uKYs=A0Jke}QTI^7nv3fd6j8U!4HxS! zZZf#fjEsgNW$<4qCDL}pvrJ@kurD~-Nn7q5@OL~gT1G)fX1c}T?Z`dFwMhlT_RR4{ zCrsjCWFiyGV0cJwDGx=E7(FsN3*N+BYr^d&TJFk_YniB*<5XkO+N1=f4XLEwWGFV8 zeFmqU3@O!8M=H@Z@j#?KK8VOt?IaPK(Z*P6lN#gmwF*i!UYJe0_Dfn1mvYVyE>lPWSFlRb W)^?TTHTpZG7byX#Dyx-HM(qdIH)qiR literal 0 HcmV?d00001 diff --git a/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/XmattersNotificationHeadersHeader$Builder.class b/sdk/java/build/classes/java/main/com/pulumi/dynatrace/outputs/XmattersNotificationHeadersHeader$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..676d7e2a9969232ad27cb1cd30e16bd6fc3236c9 GIT binary patch literal 2026 zcmbtUYflqF6g|_|wo5BMQH#%tSXyBf-xl#fB&f9-F{p`OhBD}o?Jn-l8vR$A*kCj< ze)dNh@7>l?P$Nk{?A)2zd(XLd&Yk)3^UF5?S1@a%fJqxuaB{G5E{8l1HqP^m1{>2n zo3?Pl!bO|blNK&nxGa$JWJ?L`t*^;TEn5oZD%En=O%TsL(9< zp~+)E4p_LJM-4N1?80y!yLs4$VS(M-Z;`<4U~MTdKN!Gok+&rGXn9RFjfEQmlYQ|2 z7h7OzhyJ~Lx+gx9$Y|H;(9(t26{t6n4phVU_?;m6`rEtXR-5SS`0f@t?u;Ji>Afq^ z>zG7>MWR`Pb%MYinrF!FjrT~lZF~HWG^TNcJRGuuY`U@m@i7iLNFzIeNDk4M?>OKv zj?jvOkJ8A&YebqLTjJpAXC$6gs-KW-BgHn|Mux4`Ms^dqNZ7zMQn-K|E>gOe2>CKj z(nHT|BOSyp8)4%ZjuRgpDo)Tp=DpkHEmWBFJ95nUfqo>w$=fkR4MUjegDmtQ3-O6< zp42Idq4pv8WDI|^3vX4bT*7wXTS((}AF$N}wzf&Yz+?1ToIdLz=o6jV3~q&d2RN=iYnno&Nmw?FWFTcv3(CMH@EmnWa=f85MK7Z{a}! zITX$E(87`hm%)0WrQZ}WgYzm3MO^iHl8A&M8}dLfjBoDq1Md1f+;g{8EW^E3hLJ>g zu~2pHYjT--t3xFNQJ0Bq_~LmOMv5yLg~T$Q!autF#OT(v?{o4ap5cQwLvBrmQmr!# zmCAJrU5%Q=JGLo9QPV*~#5)FHl8HR-*Lf_>y<^O(50WB1+w`KqZE0Tz(rq4wT*cfI zZlqO9tHga5aHT|?)FLH!rI+USQgEs~X>XLyM5#Qe+R3h2E9tviEmIoz$=}|VdlW~< zlv-t=)7n|Sbpl$AuIR4`cD}q9I}Ie-Po;BmtzKX<`KH+A+E>(?!gi!%Pi#oj!{R?X zv1BHWp|2P(ibc;5C2mzGDhhTETV{?%Y9di@gqf7Y!BtE+xP(y$V;HsY$iZVQI~d0( z!^XvkZGx;Yte=mK;qsrywbj@co}w8~O?{(A3P!u#XG6l2dZwxkqsE4_A)CzNC;zS`7g( ziR-jFZ3o=I6x|qwyGd(5_z0QL^kaq~UGU66@EE4a%Yc`O#01G#jxh8U+0*#B9(=wN zd?t-?i*Vxud4>n@Ec}JX#w_MK#mrM)=9B-9-1}o#CLh*QPmvU##eBzmg_Jkh+s2!; p%b!la(i7Ik?Nqxg76_8Tos%Xl()})dvqY97r9n+KCmSP}`VA3_hX()v literal 0 HcmV?d00001 diff --git a/sdk/java/build/tmp/compileJava/previous-compilation-data.bin b/sdk/java/build/tmp/compileJava/previous-compilation-data.bin index ff9175879b804a05bc4d119fa291d8859152af30..6f363e70fd506892ebcc1ef2c5bc5ebdf049f267 100644 GIT binary patch literal 219597 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 z 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

-namTln(>XGRn0ewhkcE@q7 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

F)p4>(z+QfvLnMezh-O5yJV=6mo$ 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 diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/AnsibleTowerNotification.java b/sdk/java/src/main/java/com/pulumi/dynatrace/AnsibleTowerNotification.java new file mode 100644 index 00000000..ad9377af --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/AnsibleTowerNotification.java @@ -0,0 +1,185 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dynatrace.AnsibleTowerNotificationArgs; +import com.pulumi.dynatrace.Utilities; +import com.pulumi.dynatrace.inputs.AnsibleTowerNotificationState; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Optional; +import javax.annotation.Nullable; + +@ResourceType(type="dynatrace:index/ansibleTowerNotification:AnsibleTowerNotification") +public class AnsibleTowerNotification extends com.pulumi.resources.CustomResource { + /** + * The notification is active (`true`) or inactive (`false`). Default is `false`. + * + */ + @Export(name="active", type=Boolean.class, parameters={}) + private Output active; + + /** + * @return The notification is active (`true`) or inactive (`false`). Default is `false`. + * + */ + public Output> active() { + return Codegen.optional(this.active); + } + /** + * The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Export(name="customMessage", type=String.class, parameters={}) + private Output customMessage; + + /** + * @return The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Output customMessage() { + return this.customMessage; + } + /** + * Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + * + */ + @Export(name="insecure", type=Boolean.class, parameters={}) + private Output insecure; + + /** + * @return Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + * + */ + public Output> insecure() { + return Codegen.optional(this.insecure); + } + /** + * The URL of the target Ansible Tower job template + * + */ + @Export(name="jobTemplateUrl", type=String.class, parameters={}) + private Output jobTemplateUrl; + + /** + * @return The URL of the target Ansible Tower job template + * + */ + public Output jobTemplateUrl() { + return this.jobTemplateUrl; + } + /** + * The display name within the Dynatrace WebUI. + * + */ + @Export(name="name", type=String.class, parameters={}) + private Output name; + + /** + * @return The display name within the Dynatrace WebUI. + * + */ + public Output name() { + return this.name; + } + /** + * The password for the Ansible Tower account + * + */ + @Export(name="password", type=String.class, parameters={}) + private Output password; + + /** + * @return The password for the Ansible Tower account + * + */ + public Output> password() { + return Codegen.optional(this.password); + } + /** + * The ID of the associated alerting profile. + * + */ + @Export(name="profile", type=String.class, parameters={}) + private Output profile; + + /** + * @return The ID of the associated alerting profile. + * + */ + public Output profile() { + return this.profile; + } + /** + * The username of the Ansible Tower account + * + */ + @Export(name="username", type=String.class, parameters={}) + private Output username; + + /** + * @return The username of the Ansible Tower account + * + */ + public Output username() { + return this.username; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public AnsibleTowerNotification(String name) { + this(name, AnsibleTowerNotificationArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public AnsibleTowerNotification(String name, AnsibleTowerNotificationArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public AnsibleTowerNotification(String name, AnsibleTowerNotificationArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/ansibleTowerNotification:AnsibleTowerNotification", name, args == null ? AnsibleTowerNotificationArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private AnsibleTowerNotification(String name, Output id, @Nullable AnsibleTowerNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/ansibleTowerNotification:AnsibleTowerNotification", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .additionalSecretOutputs(List.of( + "password" + )) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static AnsibleTowerNotification get(String name, Output id, @Nullable AnsibleTowerNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new AnsibleTowerNotification(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/AnsibleTowerNotificationArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/AnsibleTowerNotificationArgs.java new file mode 100644 index 00000000..7afd81a7 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/AnsibleTowerNotificationArgs.java @@ -0,0 +1,347 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class AnsibleTowerNotificationArgs extends com.pulumi.resources.ResourceArgs { + + public static final AnsibleTowerNotificationArgs Empty = new AnsibleTowerNotificationArgs(); + + /** + * The notification is active (`true`) or inactive (`false`). Default is `false`. + * + */ + @Import(name="active") + private @Nullable Output active; + + /** + * @return The notification is active (`true`) or inactive (`false`). Default is `false`. + * + */ + public Optional> active() { + return Optional.ofNullable(this.active); + } + + /** + * The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Import(name="customMessage", required=true) + private Output customMessage; + + /** + * @return The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Output customMessage() { + return this.customMessage; + } + + /** + * Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + * + */ + @Import(name="insecure") + private @Nullable Output insecure; + + /** + * @return Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + * + */ + public Optional> insecure() { + return Optional.ofNullable(this.insecure); + } + + /** + * The URL of the target Ansible Tower job template + * + */ + @Import(name="jobTemplateUrl", required=true) + private Output jobTemplateUrl; + + /** + * @return The URL of the target Ansible Tower job template + * + */ + public Output jobTemplateUrl() { + return this.jobTemplateUrl; + } + + /** + * The display name within the Dynatrace WebUI. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The display name within the Dynatrace WebUI. + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The password for the Ansible Tower account + * + */ + @Import(name="password") + private @Nullable Output password; + + /** + * @return The password for the Ansible Tower account + * + */ + public Optional> password() { + return Optional.ofNullable(this.password); + } + + /** + * The ID of the associated alerting profile. + * + */ + @Import(name="profile", required=true) + private Output profile; + + /** + * @return The ID of the associated alerting profile. + * + */ + public Output profile() { + return this.profile; + } + + /** + * The username of the Ansible Tower account + * + */ + @Import(name="username", required=true) + private Output username; + + /** + * @return The username of the Ansible Tower account + * + */ + public Output username() { + return this.username; + } + + private AnsibleTowerNotificationArgs() {} + + private AnsibleTowerNotificationArgs(AnsibleTowerNotificationArgs $) { + this.active = $.active; + this.customMessage = $.customMessage; + this.insecure = $.insecure; + this.jobTemplateUrl = $.jobTemplateUrl; + this.name = $.name; + this.password = $.password; + this.profile = $.profile; + this.username = $.username; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(AnsibleTowerNotificationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private AnsibleTowerNotificationArgs $; + + public Builder() { + $ = new AnsibleTowerNotificationArgs(); + } + + public Builder(AnsibleTowerNotificationArgs defaults) { + $ = new AnsibleTowerNotificationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param active The notification is active (`true`) or inactive (`false`). Default is `false`. + * + * @return builder + * + */ + public Builder active(@Nullable Output active) { + $.active = active; + return this; + } + + /** + * @param active The notification is active (`true`) or inactive (`false`). Default is `false`. + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param customMessage The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder customMessage(Output customMessage) { + $.customMessage = customMessage; + return this; + } + + /** + * @param customMessage The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder customMessage(String customMessage) { + return customMessage(Output.of(customMessage)); + } + + /** + * @param insecure Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + * + * @return builder + * + */ + public Builder insecure(@Nullable Output insecure) { + $.insecure = insecure; + return this; + } + + /** + * @param insecure Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + * + * @return builder + * + */ + public Builder insecure(Boolean insecure) { + return insecure(Output.of(insecure)); + } + + /** + * @param jobTemplateUrl The URL of the target Ansible Tower job template + * + * @return builder + * + */ + public Builder jobTemplateUrl(Output jobTemplateUrl) { + $.jobTemplateUrl = jobTemplateUrl; + return this; + } + + /** + * @param jobTemplateUrl The URL of the target Ansible Tower job template + * + * @return builder + * + */ + public Builder jobTemplateUrl(String jobTemplateUrl) { + return jobTemplateUrl(Output.of(jobTemplateUrl)); + } + + /** + * @param name The display name within the Dynatrace WebUI. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The display name within the Dynatrace WebUI. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param password The password for the Ansible Tower account + * + * @return builder + * + */ + public Builder password(@Nullable Output password) { + $.password = password; + return this; + } + + /** + * @param password The password for the Ansible Tower account + * + * @return builder + * + */ + public Builder password(String password) { + return password(Output.of(password)); + } + + /** + * @param profile The ID of the associated alerting profile. + * + * @return builder + * + */ + public Builder profile(Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile. + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param username The username of the Ansible Tower account + * + * @return builder + * + */ + public Builder username(Output username) { + $.username = username; + return this; + } + + /** + * @param username The username of the Ansible Tower account + * + * @return builder + * + */ + public Builder username(String username) { + return username(Output.of(username)); + } + + public AnsibleTowerNotificationArgs build() { + $.customMessage = Objects.requireNonNull($.customMessage, "expected parameter 'customMessage' to be non-null"); + $.jobTemplateUrl = Objects.requireNonNull($.jobTemplateUrl, "expected parameter 'jobTemplateUrl' to be non-null"); + $.profile = Objects.requireNonNull($.profile, "expected parameter 'profile' to be non-null"); + $.username = Objects.requireNonNull($.username, "expected parameter 'username' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/DynatraceFunctions.java b/sdk/java/src/main/java/com/pulumi/dynatrace/DynatraceFunctions.java index cb945e7b..127520cb 100644 --- a/sdk/java/src/main/java/com/pulumi/dynatrace/DynatraceFunctions.java +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/DynatraceFunctions.java @@ -8,6 +8,8 @@ import com.pulumi.deployment.Deployment; import com.pulumi.deployment.InvokeOptions; import com.pulumi.dynatrace.Utilities; +import com.pulumi.dynatrace.inputs.GetAlertingProfileArgs; +import com.pulumi.dynatrace.inputs.GetAlertingProfilePlainArgs; import com.pulumi.dynatrace.inputs.GetAlertingProfilesArgs; import com.pulumi.dynatrace.inputs.GetAlertingProfilesPlainArgs; import com.pulumi.dynatrace.inputs.GetApplicationArgs; @@ -28,6 +30,7 @@ import com.pulumi.dynatrace.inputs.GetSyntheticLocationPlainArgs; import com.pulumi.dynatrace.inputs.GetSyntheticLocationsArgs; import com.pulumi.dynatrace.inputs.GetSyntheticLocationsPlainArgs; +import com.pulumi.dynatrace.outputs.GetAlertingProfileResult; import com.pulumi.dynatrace.outputs.GetAlertingProfilesResult; import com.pulumi.dynatrace.outputs.GetApplicationResult; import com.pulumi.dynatrace.outputs.GetAwsIamExternalResult; @@ -43,6 +46,206 @@ import java.util.concurrent.CompletableFuture; public final class DynatraceFunctions { + /** + * The Alerting Profile queries for an Alerting Profile that has a specified name. In case multiple Alerting Profiles share the same name the first one found will be used. + * The ID of this Data Resource aligns with the IDs used by the Dynatrace Settings 2.0 API. + * + * ## Example Usage + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.dynatrace.DynatraceFunctions; + * import com.pulumi.dynatrace.inputs.GetAlertingProfileArgs; + * import com.pulumi.dynatrace.WebhookNotification; + * import com.pulumi.dynatrace.WebhookNotificationArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var default = DynatraceFunctions.getAlertingProfile(GetAlertingProfileArgs.builder() + * .name("Default") + * .build()); + * + * var myWebhookNotification = new WebhookNotification("myWebhookNotification", WebhookNotificationArgs.builder() + * .active(false) + * .profile(default_.id()) + * .url("https://webhook.site/40bf4d43-1a50-4ebd-913d-bf50ce7c3a1e") + * .insecure(true) + * .notifyEventMerges(true) + * .notifyClosedProblems(true) + * .payload("web-hook-payload") + * .build()); + * + * } + * } + * ``` + * + */ + public static Output getAlertingProfile(GetAlertingProfileArgs args) { + return getAlertingProfile(args, InvokeOptions.Empty); + } + /** + * The Alerting Profile queries for an Alerting Profile that has a specified name. In case multiple Alerting Profiles share the same name the first one found will be used. + * The ID of this Data Resource aligns with the IDs used by the Dynatrace Settings 2.0 API. + * + * ## Example Usage + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.dynatrace.DynatraceFunctions; + * import com.pulumi.dynatrace.inputs.GetAlertingProfileArgs; + * import com.pulumi.dynatrace.WebhookNotification; + * import com.pulumi.dynatrace.WebhookNotificationArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var default = DynatraceFunctions.getAlertingProfile(GetAlertingProfileArgs.builder() + * .name("Default") + * .build()); + * + * var myWebhookNotification = new WebhookNotification("myWebhookNotification", WebhookNotificationArgs.builder() + * .active(false) + * .profile(default_.id()) + * .url("https://webhook.site/40bf4d43-1a50-4ebd-913d-bf50ce7c3a1e") + * .insecure(true) + * .notifyEventMerges(true) + * .notifyClosedProblems(true) + * .payload("web-hook-payload") + * .build()); + * + * } + * } + * ``` + * + */ + public static CompletableFuture getAlertingProfilePlain(GetAlertingProfilePlainArgs args) { + return getAlertingProfilePlain(args, InvokeOptions.Empty); + } + /** + * The Alerting Profile queries for an Alerting Profile that has a specified name. In case multiple Alerting Profiles share the same name the first one found will be used. + * The ID of this Data Resource aligns with the IDs used by the Dynatrace Settings 2.0 API. + * + * ## Example Usage + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.dynatrace.DynatraceFunctions; + * import com.pulumi.dynatrace.inputs.GetAlertingProfileArgs; + * import com.pulumi.dynatrace.WebhookNotification; + * import com.pulumi.dynatrace.WebhookNotificationArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var default = DynatraceFunctions.getAlertingProfile(GetAlertingProfileArgs.builder() + * .name("Default") + * .build()); + * + * var myWebhookNotification = new WebhookNotification("myWebhookNotification", WebhookNotificationArgs.builder() + * .active(false) + * .profile(default_.id()) + * .url("https://webhook.site/40bf4d43-1a50-4ebd-913d-bf50ce7c3a1e") + * .insecure(true) + * .notifyEventMerges(true) + * .notifyClosedProblems(true) + * .payload("web-hook-payload") + * .build()); + * + * } + * } + * ``` + * + */ + public static Output getAlertingProfile(GetAlertingProfileArgs args, InvokeOptions options) { + return Deployment.getInstance().invoke("dynatrace:index/getAlertingProfile:getAlertingProfile", TypeShape.of(GetAlertingProfileResult.class), args, Utilities.withVersion(options)); + } + /** + * The Alerting Profile queries for an Alerting Profile that has a specified name. In case multiple Alerting Profiles share the same name the first one found will be used. + * The ID of this Data Resource aligns with the IDs used by the Dynatrace Settings 2.0 API. + * + * ## Example Usage + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.dynatrace.DynatraceFunctions; + * import com.pulumi.dynatrace.inputs.GetAlertingProfileArgs; + * import com.pulumi.dynatrace.WebhookNotification; + * import com.pulumi.dynatrace.WebhookNotificationArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var default = DynatraceFunctions.getAlertingProfile(GetAlertingProfileArgs.builder() + * .name("Default") + * .build()); + * + * var myWebhookNotification = new WebhookNotification("myWebhookNotification", WebhookNotificationArgs.builder() + * .active(false) + * .profile(default_.id()) + * .url("https://webhook.site/40bf4d43-1a50-4ebd-913d-bf50ce7c3a1e") + * .insecure(true) + * .notifyEventMerges(true) + * .notifyClosedProblems(true) + * .payload("web-hook-payload") + * .build()); + * + * } + * } + * ``` + * + */ + public static CompletableFuture getAlertingProfilePlain(GetAlertingProfilePlainArgs args, InvokeOptions options) { + return Deployment.getInstance().invokeAsync("dynatrace:index/getAlertingProfile:getAlertingProfile", TypeShape.of(GetAlertingProfileResult.class), args, Utilities.withVersion(options)); + } /** * The alerting profiles data source allows retrieval of all alerting profiles. * @@ -348,42 +551,474 @@ public static CompletableFuture getAwsIamExternalPlain( return Deployment.getInstance().invokeAsync("dynatrace:index/getAwsIamExternal:getAwsIamExternal", TypeShape.of(GetAwsIamExternalResult.class), args, Utilities.withVersion(options)); } /** - * The credentials data source allows retrieval of all credentials. + * The `dynatrace.getCredentials` data source queries for Credentials stored within the Credentials Vault using the properties `name`, `scope` and `type`. At least one of `name`, `scope` or `type` needs to be specified as a non empty value. Combinations of the three properties are also possible. + * + * ## Example Usage + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.dynatrace.DynatraceFunctions; + * import com.pulumi.dynatrace.inputs.GetCredentialsArgs; + * import com.pulumi.dynatrace.HttpMonitor; + * import com.pulumi.dynatrace.HttpMonitorArgs; + * import com.pulumi.dynatrace.inputs.HttpMonitorAnomalyDetectionArgs; + * import com.pulumi.dynatrace.inputs.HttpMonitorScriptArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var creds = DynatraceFunctions.getCredentials(GetCredentialsArgs.builder() + * .name("Office365 Access Token") + * .build()); + * + * var _name_ = new HttpMonitor("#name#", HttpMonitorArgs.builder() + * .enabled(true) + * .frequency(60) + * .locations("SYNTHETIC_LOCATION-781752216580B1BC") + * .anomalyDetections(HttpMonitorAnomalyDetectionArgs.builder() + * .loadingTimeThresholds(HttpMonitorAnomalyDetectionLoadingTimeThresholdArgs.builder() + * .enabled(true) + * .build()) + * .outageHandlings(HttpMonitorAnomalyDetectionOutageHandlingArgs.builder() + * .globalOutage(true) + * .localOutage(false) + * .retryOnError(false) + * .build()) + * .build()) + * .script(HttpMonitorScriptArgs.builder() + * .requests(HttpMonitorScriptRequestArgs.builder() + * .description("google.com") + * .method("GET") + * .url("https://www.google.com") + * .authentication(HttpMonitorScriptRequestAuthenticationArgs.builder() + * .type("BASIC_AUTHENTICATION") + * .credentials(creds.applyValue(getCredentialsResult -> getCredentialsResult.id())) + * .build()) + * .configuration(HttpMonitorScriptRequestConfigurationArgs.builder() + * .acceptAnyCertificate(true) + * .followRedirects(true) + * .build()) + * .validation(HttpMonitorScriptRequestValidationArgs.builder() + * .rules(HttpMonitorScriptRequestValidationRuleArgs.builder() + * .type("httpStatusesList") + * .passIfFound(false) + * .value(">=400") + * .build()) + * .build()) + * .build()) + * .build()) + * .build()); + * + * } + * } + * ``` * */ public static Output getCredentials() { return getCredentials(GetCredentialsArgs.Empty, InvokeOptions.Empty); } /** - * The credentials data source allows retrieval of all credentials. + * The `dynatrace.getCredentials` data source queries for Credentials stored within the Credentials Vault using the properties `name`, `scope` and `type`. At least one of `name`, `scope` or `type` needs to be specified as a non empty value. Combinations of the three properties are also possible. + * + * ## Example Usage + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.dynatrace.DynatraceFunctions; + * import com.pulumi.dynatrace.inputs.GetCredentialsArgs; + * import com.pulumi.dynatrace.HttpMonitor; + * import com.pulumi.dynatrace.HttpMonitorArgs; + * import com.pulumi.dynatrace.inputs.HttpMonitorAnomalyDetectionArgs; + * import com.pulumi.dynatrace.inputs.HttpMonitorScriptArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var creds = DynatraceFunctions.getCredentials(GetCredentialsArgs.builder() + * .name("Office365 Access Token") + * .build()); + * + * var _name_ = new HttpMonitor("#name#", HttpMonitorArgs.builder() + * .enabled(true) + * .frequency(60) + * .locations("SYNTHETIC_LOCATION-781752216580B1BC") + * .anomalyDetections(HttpMonitorAnomalyDetectionArgs.builder() + * .loadingTimeThresholds(HttpMonitorAnomalyDetectionLoadingTimeThresholdArgs.builder() + * .enabled(true) + * .build()) + * .outageHandlings(HttpMonitorAnomalyDetectionOutageHandlingArgs.builder() + * .globalOutage(true) + * .localOutage(false) + * .retryOnError(false) + * .build()) + * .build()) + * .script(HttpMonitorScriptArgs.builder() + * .requests(HttpMonitorScriptRequestArgs.builder() + * .description("google.com") + * .method("GET") + * .url("https://www.google.com") + * .authentication(HttpMonitorScriptRequestAuthenticationArgs.builder() + * .type("BASIC_AUTHENTICATION") + * .credentials(creds.applyValue(getCredentialsResult -> getCredentialsResult.id())) + * .build()) + * .configuration(HttpMonitorScriptRequestConfigurationArgs.builder() + * .acceptAnyCertificate(true) + * .followRedirects(true) + * .build()) + * .validation(HttpMonitorScriptRequestValidationArgs.builder() + * .rules(HttpMonitorScriptRequestValidationRuleArgs.builder() + * .type("httpStatusesList") + * .passIfFound(false) + * .value(">=400") + * .build()) + * .build()) + * .build()) + * .build()) + * .build()); + * + * } + * } + * ``` * */ public static CompletableFuture getCredentialsPlain() { return getCredentialsPlain(GetCredentialsPlainArgs.Empty, InvokeOptions.Empty); } /** - * The credentials data source allows retrieval of all credentials. + * The `dynatrace.getCredentials` data source queries for Credentials stored within the Credentials Vault using the properties `name`, `scope` and `type`. At least one of `name`, `scope` or `type` needs to be specified as a non empty value. Combinations of the three properties are also possible. + * + * ## Example Usage + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.dynatrace.DynatraceFunctions; + * import com.pulumi.dynatrace.inputs.GetCredentialsArgs; + * import com.pulumi.dynatrace.HttpMonitor; + * import com.pulumi.dynatrace.HttpMonitorArgs; + * import com.pulumi.dynatrace.inputs.HttpMonitorAnomalyDetectionArgs; + * import com.pulumi.dynatrace.inputs.HttpMonitorScriptArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var creds = DynatraceFunctions.getCredentials(GetCredentialsArgs.builder() + * .name("Office365 Access Token") + * .build()); + * + * var _name_ = new HttpMonitor("#name#", HttpMonitorArgs.builder() + * .enabled(true) + * .frequency(60) + * .locations("SYNTHETIC_LOCATION-781752216580B1BC") + * .anomalyDetections(HttpMonitorAnomalyDetectionArgs.builder() + * .loadingTimeThresholds(HttpMonitorAnomalyDetectionLoadingTimeThresholdArgs.builder() + * .enabled(true) + * .build()) + * .outageHandlings(HttpMonitorAnomalyDetectionOutageHandlingArgs.builder() + * .globalOutage(true) + * .localOutage(false) + * .retryOnError(false) + * .build()) + * .build()) + * .script(HttpMonitorScriptArgs.builder() + * .requests(HttpMonitorScriptRequestArgs.builder() + * .description("google.com") + * .method("GET") + * .url("https://www.google.com") + * .authentication(HttpMonitorScriptRequestAuthenticationArgs.builder() + * .type("BASIC_AUTHENTICATION") + * .credentials(creds.applyValue(getCredentialsResult -> getCredentialsResult.id())) + * .build()) + * .configuration(HttpMonitorScriptRequestConfigurationArgs.builder() + * .acceptAnyCertificate(true) + * .followRedirects(true) + * .build()) + * .validation(HttpMonitorScriptRequestValidationArgs.builder() + * .rules(HttpMonitorScriptRequestValidationRuleArgs.builder() + * .type("httpStatusesList") + * .passIfFound(false) + * .value(">=400") + * .build()) + * .build()) + * .build()) + * .build()) + * .build()); + * + * } + * } + * ``` * */ public static Output getCredentials(GetCredentialsArgs args) { return getCredentials(args, InvokeOptions.Empty); } /** - * The credentials data source allows retrieval of all credentials. + * The `dynatrace.getCredentials` data source queries for Credentials stored within the Credentials Vault using the properties `name`, `scope` and `type`. At least one of `name`, `scope` or `type` needs to be specified as a non empty value. Combinations of the three properties are also possible. + * + * ## Example Usage + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.dynatrace.DynatraceFunctions; + * import com.pulumi.dynatrace.inputs.GetCredentialsArgs; + * import com.pulumi.dynatrace.HttpMonitor; + * import com.pulumi.dynatrace.HttpMonitorArgs; + * import com.pulumi.dynatrace.inputs.HttpMonitorAnomalyDetectionArgs; + * import com.pulumi.dynatrace.inputs.HttpMonitorScriptArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var creds = DynatraceFunctions.getCredentials(GetCredentialsArgs.builder() + * .name("Office365 Access Token") + * .build()); + * + * var _name_ = new HttpMonitor("#name#", HttpMonitorArgs.builder() + * .enabled(true) + * .frequency(60) + * .locations("SYNTHETIC_LOCATION-781752216580B1BC") + * .anomalyDetections(HttpMonitorAnomalyDetectionArgs.builder() + * .loadingTimeThresholds(HttpMonitorAnomalyDetectionLoadingTimeThresholdArgs.builder() + * .enabled(true) + * .build()) + * .outageHandlings(HttpMonitorAnomalyDetectionOutageHandlingArgs.builder() + * .globalOutage(true) + * .localOutage(false) + * .retryOnError(false) + * .build()) + * .build()) + * .script(HttpMonitorScriptArgs.builder() + * .requests(HttpMonitorScriptRequestArgs.builder() + * .description("google.com") + * .method("GET") + * .url("https://www.google.com") + * .authentication(HttpMonitorScriptRequestAuthenticationArgs.builder() + * .type("BASIC_AUTHENTICATION") + * .credentials(creds.applyValue(getCredentialsResult -> getCredentialsResult.id())) + * .build()) + * .configuration(HttpMonitorScriptRequestConfigurationArgs.builder() + * .acceptAnyCertificate(true) + * .followRedirects(true) + * .build()) + * .validation(HttpMonitorScriptRequestValidationArgs.builder() + * .rules(HttpMonitorScriptRequestValidationRuleArgs.builder() + * .type("httpStatusesList") + * .passIfFound(false) + * .value(">=400") + * .build()) + * .build()) + * .build()) + * .build()) + * .build()); + * + * } + * } + * ``` * */ public static CompletableFuture getCredentialsPlain(GetCredentialsPlainArgs args) { return getCredentialsPlain(args, InvokeOptions.Empty); } /** - * The credentials data source allows retrieval of all credentials. + * The `dynatrace.getCredentials` data source queries for Credentials stored within the Credentials Vault using the properties `name`, `scope` and `type`. At least one of `name`, `scope` or `type` needs to be specified as a non empty value. Combinations of the three properties are also possible. + * + * ## Example Usage + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.dynatrace.DynatraceFunctions; + * import com.pulumi.dynatrace.inputs.GetCredentialsArgs; + * import com.pulumi.dynatrace.HttpMonitor; + * import com.pulumi.dynatrace.HttpMonitorArgs; + * import com.pulumi.dynatrace.inputs.HttpMonitorAnomalyDetectionArgs; + * import com.pulumi.dynatrace.inputs.HttpMonitorScriptArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var creds = DynatraceFunctions.getCredentials(GetCredentialsArgs.builder() + * .name("Office365 Access Token") + * .build()); + * + * var _name_ = new HttpMonitor("#name#", HttpMonitorArgs.builder() + * .enabled(true) + * .frequency(60) + * .locations("SYNTHETIC_LOCATION-781752216580B1BC") + * .anomalyDetections(HttpMonitorAnomalyDetectionArgs.builder() + * .loadingTimeThresholds(HttpMonitorAnomalyDetectionLoadingTimeThresholdArgs.builder() + * .enabled(true) + * .build()) + * .outageHandlings(HttpMonitorAnomalyDetectionOutageHandlingArgs.builder() + * .globalOutage(true) + * .localOutage(false) + * .retryOnError(false) + * .build()) + * .build()) + * .script(HttpMonitorScriptArgs.builder() + * .requests(HttpMonitorScriptRequestArgs.builder() + * .description("google.com") + * .method("GET") + * .url("https://www.google.com") + * .authentication(HttpMonitorScriptRequestAuthenticationArgs.builder() + * .type("BASIC_AUTHENTICATION") + * .credentials(creds.applyValue(getCredentialsResult -> getCredentialsResult.id())) + * .build()) + * .configuration(HttpMonitorScriptRequestConfigurationArgs.builder() + * .acceptAnyCertificate(true) + * .followRedirects(true) + * .build()) + * .validation(HttpMonitorScriptRequestValidationArgs.builder() + * .rules(HttpMonitorScriptRequestValidationRuleArgs.builder() + * .type("httpStatusesList") + * .passIfFound(false) + * .value(">=400") + * .build()) + * .build()) + * .build()) + * .build()) + * .build()); + * + * } + * } + * ``` * */ public static Output getCredentials(GetCredentialsArgs args, InvokeOptions options) { return Deployment.getInstance().invoke("dynatrace:index/getCredentials:getCredentials", TypeShape.of(GetCredentialsResult.class), args, Utilities.withVersion(options)); } /** - * The credentials data source allows retrieval of all credentials. + * The `dynatrace.getCredentials` data source queries for Credentials stored within the Credentials Vault using the properties `name`, `scope` and `type`. At least one of `name`, `scope` or `type` needs to be specified as a non empty value. Combinations of the three properties are also possible. + * + * ## Example Usage + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.dynatrace.DynatraceFunctions; + * import com.pulumi.dynatrace.inputs.GetCredentialsArgs; + * import com.pulumi.dynatrace.HttpMonitor; + * import com.pulumi.dynatrace.HttpMonitorArgs; + * import com.pulumi.dynatrace.inputs.HttpMonitorAnomalyDetectionArgs; + * import com.pulumi.dynatrace.inputs.HttpMonitorScriptArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var creds = DynatraceFunctions.getCredentials(GetCredentialsArgs.builder() + * .name("Office365 Access Token") + * .build()); + * + * var _name_ = new HttpMonitor("#name#", HttpMonitorArgs.builder() + * .enabled(true) + * .frequency(60) + * .locations("SYNTHETIC_LOCATION-781752216580B1BC") + * .anomalyDetections(HttpMonitorAnomalyDetectionArgs.builder() + * .loadingTimeThresholds(HttpMonitorAnomalyDetectionLoadingTimeThresholdArgs.builder() + * .enabled(true) + * .build()) + * .outageHandlings(HttpMonitorAnomalyDetectionOutageHandlingArgs.builder() + * .globalOutage(true) + * .localOutage(false) + * .retryOnError(false) + * .build()) + * .build()) + * .script(HttpMonitorScriptArgs.builder() + * .requests(HttpMonitorScriptRequestArgs.builder() + * .description("google.com") + * .method("GET") + * .url("https://www.google.com") + * .authentication(HttpMonitorScriptRequestAuthenticationArgs.builder() + * .type("BASIC_AUTHENTICATION") + * .credentials(creds.applyValue(getCredentialsResult -> getCredentialsResult.id())) + * .build()) + * .configuration(HttpMonitorScriptRequestConfigurationArgs.builder() + * .acceptAnyCertificate(true) + * .followRedirects(true) + * .build()) + * .validation(HttpMonitorScriptRequestValidationArgs.builder() + * .rules(HttpMonitorScriptRequestValidationRuleArgs.builder() + * .type("httpStatusesList") + * .passIfFound(false) + * .value(">=400") + * .build()) + * .build()) + * .build()) + * .build()) + * .build()); + * + * } + * } + * ``` * */ public static CompletableFuture getCredentialsPlain(GetCredentialsPlainArgs args, InvokeOptions options) { diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/EmailNotification.java b/sdk/java/src/main/java/com/pulumi/dynatrace/EmailNotification.java new file mode 100644 index 00000000..f98c5de6 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/EmailNotification.java @@ -0,0 +1,196 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dynatrace.EmailNotificationArgs; +import com.pulumi.dynatrace.Utilities; +import com.pulumi.dynatrace.inputs.EmailNotificationState; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Optional; +import javax.annotation.Nullable; + +@ResourceType(type="dynatrace:index/emailNotification:EmailNotification") +public class EmailNotification extends com.pulumi.resources.CustomResource { + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Export(name="active", type=Boolean.class, parameters={}) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output> active() { + return Codegen.optional(this.active); + } + /** + * The list of the email BCC-recipients + * + */ + @Export(name="bccs", type=List.class, parameters={String.class}) + private Output> bccs; + + /** + * @return The list of the email BCC-recipients + * + */ + public Output>> bccs() { + return Codegen.optional(this.bccs); + } + /** + * The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Export(name="body", type=String.class, parameters={}) + private Output body; + + /** + * @return The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Output body() { + return this.body; + } + /** + * The list of the email CC-recipients + * + */ + @Export(name="ccs", type=List.class, parameters={String.class}) + private Output> ccs; + + /** + * @return The list of the email CC-recipients + * + */ + public Output>> ccs() { + return Codegen.optional(this.ccs); + } + /** + * The name of the notification configuration + * + */ + @Export(name="name", type=String.class, parameters={}) + private Output name; + + /** + * @return The name of the notification configuration + * + */ + public Output name() { + return this.name; + } + /** + * Send email if problem is closed + * + */ + @Export(name="notifyClosedProblems", type=Boolean.class, parameters={}) + private Output notifyClosedProblems; + + /** + * @return Send email if problem is closed + * + */ + public Output> notifyClosedProblems() { + return Codegen.optional(this.notifyClosedProblems); + } + /** + * The ID of the associated alerting profile + * + */ + @Export(name="profile", type=String.class, parameters={}) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + /** + * The subject of the email notifications + * + */ + @Export(name="subject", type=String.class, parameters={}) + private Output subject; + + /** + * @return The subject of the email notifications + * + */ + public Output subject() { + return this.subject; + } + /** + * The list of the email recipients + * + */ + @Export(name="tos", type=List.class, parameters={String.class}) + private Output> tos; + + /** + * @return The list of the email recipients + * + */ + public Output> tos() { + return this.tos; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public EmailNotification(String name) { + this(name, EmailNotificationArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public EmailNotification(String name, EmailNotificationArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public EmailNotification(String name, EmailNotificationArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/emailNotification:EmailNotification", name, args == null ? EmailNotificationArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private EmailNotification(String name, Output id, @Nullable EmailNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/emailNotification:EmailNotification", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static EmailNotification get(String name, Output id, @Nullable EmailNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new EmailNotification(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/EmailNotificationArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/EmailNotificationArgs.java new file mode 100644 index 00000000..4d30df45 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/EmailNotificationArgs.java @@ -0,0 +1,415 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class EmailNotificationArgs extends com.pulumi.resources.ResourceArgs { + + public static final EmailNotificationArgs Empty = new EmailNotificationArgs(); + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active") + private @Nullable Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Optional> active() { + return Optional.ofNullable(this.active); + } + + /** + * The list of the email BCC-recipients + * + */ + @Import(name="bccs") + private @Nullable Output> bccs; + + /** + * @return The list of the email BCC-recipients + * + */ + public Optional>> bccs() { + return Optional.ofNullable(this.bccs); + } + + /** + * The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Import(name="body", required=true) + private Output body; + + /** + * @return The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Output body() { + return this.body; + } + + /** + * The list of the email CC-recipients + * + */ + @Import(name="ccs") + private @Nullable Output> ccs; + + /** + * @return The list of the email CC-recipients + * + */ + public Optional>> ccs() { + return Optional.ofNullable(this.ccs); + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * Send email if problem is closed + * + */ + @Import(name="notifyClosedProblems") + private @Nullable Output notifyClosedProblems; + + /** + * @return Send email if problem is closed + * + */ + public Optional> notifyClosedProblems() { + return Optional.ofNullable(this.notifyClosedProblems); + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile", required=true) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + + /** + * The subject of the email notifications + * + */ + @Import(name="subject", required=true) + private Output subject; + + /** + * @return The subject of the email notifications + * + */ + public Output subject() { + return this.subject; + } + + /** + * The list of the email recipients + * + */ + @Import(name="tos", required=true) + private Output> tos; + + /** + * @return The list of the email recipients + * + */ + public Output> tos() { + return this.tos; + } + + private EmailNotificationArgs() {} + + private EmailNotificationArgs(EmailNotificationArgs $) { + this.active = $.active; + this.bccs = $.bccs; + this.body = $.body; + this.ccs = $.ccs; + this.name = $.name; + this.notifyClosedProblems = $.notifyClosedProblems; + this.profile = $.profile; + this.subject = $.subject; + this.tos = $.tos; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(EmailNotificationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private EmailNotificationArgs $; + + public Builder() { + $ = new EmailNotificationArgs(); + } + + public Builder(EmailNotificationArgs defaults) { + $ = new EmailNotificationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(@Nullable Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param bccs The list of the email BCC-recipients + * + * @return builder + * + */ + public Builder bccs(@Nullable Output> bccs) { + $.bccs = bccs; + return this; + } + + /** + * @param bccs The list of the email BCC-recipients + * + * @return builder + * + */ + public Builder bccs(List bccs) { + return bccs(Output.of(bccs)); + } + + /** + * @param bccs The list of the email BCC-recipients + * + * @return builder + * + */ + public Builder bccs(String... bccs) { + return bccs(List.of(bccs)); + } + + /** + * @param body The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder body(Output body) { + $.body = body; + return this; + } + + /** + * @param body The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder body(String body) { + return body(Output.of(body)); + } + + /** + * @param ccs The list of the email CC-recipients + * + * @return builder + * + */ + public Builder ccs(@Nullable Output> ccs) { + $.ccs = ccs; + return this; + } + + /** + * @param ccs The list of the email CC-recipients + * + * @return builder + * + */ + public Builder ccs(List ccs) { + return ccs(Output.of(ccs)); + } + + /** + * @param ccs The list of the email CC-recipients + * + * @return builder + * + */ + public Builder ccs(String... ccs) { + return ccs(List.of(ccs)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param notifyClosedProblems Send email if problem is closed + * + * @return builder + * + */ + public Builder notifyClosedProblems(@Nullable Output notifyClosedProblems) { + $.notifyClosedProblems = notifyClosedProblems; + return this; + } + + /** + * @param notifyClosedProblems Send email if problem is closed + * + * @return builder + * + */ + public Builder notifyClosedProblems(Boolean notifyClosedProblems) { + return notifyClosedProblems(Output.of(notifyClosedProblems)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param subject The subject of the email notifications + * + * @return builder + * + */ + public Builder subject(Output subject) { + $.subject = subject; + return this; + } + + /** + * @param subject The subject of the email notifications + * + * @return builder + * + */ + public Builder subject(String subject) { + return subject(Output.of(subject)); + } + + /** + * @param tos The list of the email recipients + * + * @return builder + * + */ + public Builder tos(Output> tos) { + $.tos = tos; + return this; + } + + /** + * @param tos The list of the email recipients + * + * @return builder + * + */ + public Builder tos(List tos) { + return tos(Output.of(tos)); + } + + /** + * @param tos The list of the email recipients + * + * @return builder + * + */ + public Builder tos(String... tos) { + return tos(List.of(tos)); + } + + public EmailNotificationArgs build() { + $.body = Objects.requireNonNull($.body, "expected parameter 'body' to be non-null"); + $.profile = Objects.requireNonNull($.profile, "expected parameter 'profile' to be non-null"); + $.subject = Objects.requireNonNull($.subject, "expected parameter 'subject' to be non-null"); + $.tos = Objects.requireNonNull($.tos, "expected parameter 'tos' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/FrequentIssues.java b/sdk/java/src/main/java/com/pulumi/dynatrace/FrequentIssues.java new file mode 100644 index 00000000..3ad5dc0a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/FrequentIssues.java @@ -0,0 +1,109 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dynatrace.FrequentIssuesArgs; +import com.pulumi.dynatrace.Utilities; +import com.pulumi.dynatrace.inputs.FrequentIssuesState; +import java.lang.Boolean; +import javax.annotation.Nullable; + +@ResourceType(type="dynatrace:index/frequentIssues:FrequentIssues") +public class FrequentIssues extends com.pulumi.resources.CustomResource { + /** + * Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + * + */ + @Export(name="detectApps", type=Boolean.class, parameters={}) + private Output detectApps; + + /** + * @return Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + * + */ + public Output detectApps() { + return this.detectApps; + } + /** + * Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + * + */ + @Export(name="detectInfra", type=Boolean.class, parameters={}) + private Output detectInfra; + + /** + * @return Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + * + */ + public Output detectInfra() { + return this.detectInfra; + } + /** + * Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + * + */ + @Export(name="detectTxn", type=Boolean.class, parameters={}) + private Output detectTxn; + + /** + * @return Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + * + */ + public Output detectTxn() { + return this.detectTxn; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public FrequentIssues(String name) { + this(name, FrequentIssuesArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public FrequentIssues(String name, FrequentIssuesArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public FrequentIssues(String name, FrequentIssuesArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/frequentIssues:FrequentIssues", name, args == null ? FrequentIssuesArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private FrequentIssues(String name, Output id, @Nullable FrequentIssuesState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/frequentIssues:FrequentIssues", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static FrequentIssues get(String name, Output id, @Nullable FrequentIssuesState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new FrequentIssues(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/FrequentIssuesArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/FrequentIssuesArgs.java new file mode 100644 index 00000000..bcd3727a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/FrequentIssuesArgs.java @@ -0,0 +1,158 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.util.Objects; + + +public final class FrequentIssuesArgs extends com.pulumi.resources.ResourceArgs { + + public static final FrequentIssuesArgs Empty = new FrequentIssuesArgs(); + + /** + * Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + * + */ + @Import(name="detectApps", required=true) + private Output detectApps; + + /** + * @return Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + * + */ + public Output detectApps() { + return this.detectApps; + } + + /** + * Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + * + */ + @Import(name="detectInfra", required=true) + private Output detectInfra; + + /** + * @return Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + * + */ + public Output detectInfra() { + return this.detectInfra; + } + + /** + * Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + * + */ + @Import(name="detectTxn", required=true) + private Output detectTxn; + + /** + * @return Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + * + */ + public Output detectTxn() { + return this.detectTxn; + } + + private FrequentIssuesArgs() {} + + private FrequentIssuesArgs(FrequentIssuesArgs $) { + this.detectApps = $.detectApps; + this.detectInfra = $.detectInfra; + this.detectTxn = $.detectTxn; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(FrequentIssuesArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private FrequentIssuesArgs $; + + public Builder() { + $ = new FrequentIssuesArgs(); + } + + public Builder(FrequentIssuesArgs defaults) { + $ = new FrequentIssuesArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param detectApps Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder detectApps(Output detectApps) { + $.detectApps = detectApps; + return this; + } + + /** + * @param detectApps Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder detectApps(Boolean detectApps) { + return detectApps(Output.of(detectApps)); + } + + /** + * @param detectInfra Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder detectInfra(Output detectInfra) { + $.detectInfra = detectInfra; + return this; + } + + /** + * @param detectInfra Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder detectInfra(Boolean detectInfra) { + return detectInfra(Output.of(detectInfra)); + } + + /** + * @param detectTxn Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder detectTxn(Output detectTxn) { + $.detectTxn = detectTxn; + return this; + } + + /** + * @param detectTxn Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder detectTxn(Boolean detectTxn) { + return detectTxn(Output.of(detectTxn)); + } + + public FrequentIssuesArgs build() { + $.detectApps = Objects.requireNonNull($.detectApps, "expected parameter 'detectApps' to be non-null"); + $.detectInfra = Objects.requireNonNull($.detectInfra, "expected parameter 'detectInfra' to be non-null"); + $.detectTxn = Objects.requireNonNull($.detectTxn, "expected parameter 'detectTxn' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/JiraNotification.java b/sdk/java/src/main/java/com/pulumi/dynatrace/JiraNotification.java new file mode 100644 index 00000000..341c5919 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/JiraNotification.java @@ -0,0 +1,213 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dynatrace.JiraNotificationArgs; +import com.pulumi.dynatrace.Utilities; +import com.pulumi.dynatrace.inputs.JiraNotificationState; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Optional; +import javax.annotation.Nullable; + +@ResourceType(type="dynatrace:index/jiraNotification:JiraNotification") +public class JiraNotification extends com.pulumi.resources.CustomResource { + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Export(name="active", type=Boolean.class, parameters={}) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output active() { + return this.active; + } + /** + * The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + * + */ + @Export(name="apiToken", type=String.class, parameters={}) + private Output apiToken; + + /** + * @return The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + * + */ + public Output> apiToken() { + return Codegen.optional(this.apiToken); + } + /** + * The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + * + */ + @Export(name="description", type=String.class, parameters={}) + private Output description; + + /** + * @return The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + * + */ + public Output description() { + return this.description; + } + /** + * The type of the Jira issue to be created by this notification + * + */ + @Export(name="issueType", type=String.class, parameters={}) + private Output issueType; + + /** + * @return The type of the Jira issue to be created by this notification + * + */ + public Output issueType() { + return this.issueType; + } + /** + * The name of the notification configuration + * + */ + @Export(name="name", type=String.class, parameters={}) + private Output name; + + /** + * @return The name of the notification configuration + * + */ + public Output name() { + return this.name; + } + /** + * The ID of the associated alerting profile + * + */ + @Export(name="profile", type=String.class, parameters={}) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + /** + * The project key of the Jira issue to be created by this notification + * + */ + @Export(name="projectKey", type=String.class, parameters={}) + private Output projectKey; + + /** + * @return The project key of the Jira issue to be created by this notification + * + */ + public Output projectKey() { + return this.projectKey; + } + /** + * The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Export(name="summary", type=String.class, parameters={}) + private Output summary; + + /** + * @return The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Output summary() { + return this.summary; + } + /** + * The URL of the Jira API endpoint + * + */ + @Export(name="url", type=String.class, parameters={}) + private Output url; + + /** + * @return The URL of the Jira API endpoint + * + */ + public Output url() { + return this.url; + } + /** + * The username of the Jira profile + * + */ + @Export(name="username", type=String.class, parameters={}) + private Output username; + + /** + * @return The username of the Jira profile + * + */ + public Output username() { + return this.username; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public JiraNotification(String name) { + this(name, JiraNotificationArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public JiraNotification(String name, JiraNotificationArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public JiraNotification(String name, JiraNotificationArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/jiraNotification:JiraNotification", name, args == null ? JiraNotificationArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private JiraNotification(String name, Output id, @Nullable JiraNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/jiraNotification:JiraNotification", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .additionalSecretOutputs(List.of( + "apiToken" + )) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static JiraNotification get(String name, Output id, @Nullable JiraNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new JiraNotification(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/JiraNotificationArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/JiraNotificationArgs.java new file mode 100644 index 00000000..896431f4 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/JiraNotificationArgs.java @@ -0,0 +1,425 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class JiraNotificationArgs extends com.pulumi.resources.ResourceArgs { + + public static final JiraNotificationArgs Empty = new JiraNotificationArgs(); + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active", required=true) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output active() { + return this.active; + } + + /** + * The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + * + */ + @Import(name="apiToken") + private @Nullable Output apiToken; + + /** + * @return The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + * + */ + public Optional> apiToken() { + return Optional.ofNullable(this.apiToken); + } + + /** + * The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + * + */ + @Import(name="description", required=true) + private Output description; + + /** + * @return The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + * + */ + public Output description() { + return this.description; + } + + /** + * The type of the Jira issue to be created by this notification + * + */ + @Import(name="issueType", required=true) + private Output issueType; + + /** + * @return The type of the Jira issue to be created by this notification + * + */ + public Output issueType() { + return this.issueType; + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile", required=true) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + + /** + * The project key of the Jira issue to be created by this notification + * + */ + @Import(name="projectKey", required=true) + private Output projectKey; + + /** + * @return The project key of the Jira issue to be created by this notification + * + */ + public Output projectKey() { + return this.projectKey; + } + + /** + * The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Import(name="summary", required=true) + private Output summary; + + /** + * @return The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Output summary() { + return this.summary; + } + + /** + * The URL of the Jira API endpoint + * + */ + @Import(name="url", required=true) + private Output url; + + /** + * @return The URL of the Jira API endpoint + * + */ + public Output url() { + return this.url; + } + + /** + * The username of the Jira profile + * + */ + @Import(name="username", required=true) + private Output username; + + /** + * @return The username of the Jira profile + * + */ + public Output username() { + return this.username; + } + + private JiraNotificationArgs() {} + + private JiraNotificationArgs(JiraNotificationArgs $) { + this.active = $.active; + this.apiToken = $.apiToken; + this.description = $.description; + this.issueType = $.issueType; + this.name = $.name; + this.profile = $.profile; + this.projectKey = $.projectKey; + this.summary = $.summary; + this.url = $.url; + this.username = $.username; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(JiraNotificationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private JiraNotificationArgs $; + + public Builder() { + $ = new JiraNotificationArgs(); + } + + public Builder(JiraNotificationArgs defaults) { + $ = new JiraNotificationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param apiToken The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + * + * @return builder + * + */ + public Builder apiToken(@Nullable Output apiToken) { + $.apiToken = apiToken; + return this; + } + + /** + * @param apiToken The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + * + * @return builder + * + */ + public Builder apiToken(String apiToken) { + return apiToken(Output.of(apiToken)); + } + + /** + * @param description The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + * + * @return builder + * + */ + public Builder description(Output description) { + $.description = description; + return this; + } + + /** + * @param description The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param issueType The type of the Jira issue to be created by this notification + * + * @return builder + * + */ + public Builder issueType(Output issueType) { + $.issueType = issueType; + return this; + } + + /** + * @param issueType The type of the Jira issue to be created by this notification + * + * @return builder + * + */ + public Builder issueType(String issueType) { + return issueType(Output.of(issueType)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param projectKey The project key of the Jira issue to be created by this notification + * + * @return builder + * + */ + public Builder projectKey(Output projectKey) { + $.projectKey = projectKey; + return this; + } + + /** + * @param projectKey The project key of the Jira issue to be created by this notification + * + * @return builder + * + */ + public Builder projectKey(String projectKey) { + return projectKey(Output.of(projectKey)); + } + + /** + * @param summary The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder summary(Output summary) { + $.summary = summary; + return this; + } + + /** + * @param summary The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder summary(String summary) { + return summary(Output.of(summary)); + } + + /** + * @param url The URL of the Jira API endpoint + * + * @return builder + * + */ + public Builder url(Output url) { + $.url = url; + return this; + } + + /** + * @param url The URL of the Jira API endpoint + * + * @return builder + * + */ + public Builder url(String url) { + return url(Output.of(url)); + } + + /** + * @param username The username of the Jira profile + * + * @return builder + * + */ + public Builder username(Output username) { + $.username = username; + return this; + } + + /** + * @param username The username of the Jira profile + * + * @return builder + * + */ + public Builder username(String username) { + return username(Output.of(username)); + } + + public JiraNotificationArgs build() { + $.active = Objects.requireNonNull($.active, "expected parameter 'active' to be non-null"); + $.description = Objects.requireNonNull($.description, "expected parameter 'description' to be non-null"); + $.issueType = Objects.requireNonNull($.issueType, "expected parameter 'issueType' to be non-null"); + $.profile = Objects.requireNonNull($.profile, "expected parameter 'profile' to be non-null"); + $.projectKey = Objects.requireNonNull($.projectKey, "expected parameter 'projectKey' to be non-null"); + $.summary = Objects.requireNonNull($.summary, "expected parameter 'summary' to be non-null"); + $.url = Objects.requireNonNull($.url, "expected parameter 'url' to be non-null"); + $.username = Objects.requireNonNull($.username, "expected parameter 'username' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/Maintenance.java b/sdk/java/src/main/java/com/pulumi/dynatrace/Maintenance.java new file mode 100644 index 00000000..82a68b33 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/Maintenance.java @@ -0,0 +1,128 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dynatrace.MaintenanceArgs; +import com.pulumi.dynatrace.Utilities; +import com.pulumi.dynatrace.inputs.MaintenanceState; +import com.pulumi.dynatrace.outputs.MaintenanceFilter; +import com.pulumi.dynatrace.outputs.MaintenanceGeneralProperties; +import com.pulumi.dynatrace.outputs.MaintenanceSchedule; +import java.lang.Boolean; +import java.util.List; +import java.util.Optional; +import javax.annotation.Nullable; + +@ResourceType(type="dynatrace:index/maintenance:Maintenance") +public class Maintenance extends com.pulumi.resources.CustomResource { + /** + * The maintenance window is enabled or disabled + * + */ + @Export(name="enabled", type=Boolean.class, parameters={}) + private Output enabled; + + /** + * @return The maintenance window is enabled or disabled + * + */ + public Output> enabled() { + return Codegen.optional(this.enabled); + } + /** + * The filters of the maintenance window + * + */ + @Export(name="filters", type=List.class, parameters={MaintenanceFilter.class}) + private Output> filters; + + /** + * @return The filters of the maintenance window + * + */ + public Output>> filters() { + return Codegen.optional(this.filters); + } + /** + * The general properties of the maintenance window + * + */ + @Export(name="generalProperties", type=MaintenanceGeneralProperties.class, parameters={}) + private Output generalProperties; + + /** + * @return The general properties of the maintenance window + * + */ + public Output generalProperties() { + return this.generalProperties; + } + /** + * The schedule of the maintenance window + * + */ + @Export(name="schedule", type=MaintenanceSchedule.class, parameters={}) + private Output schedule; + + /** + * @return The schedule of the maintenance window + * + */ + public Output schedule() { + return this.schedule; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public Maintenance(String name) { + this(name, MaintenanceArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public Maintenance(String name, MaintenanceArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public Maintenance(String name, MaintenanceArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/maintenance:Maintenance", name, args == null ? MaintenanceArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private Maintenance(String name, Output id, @Nullable MaintenanceState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/maintenance:Maintenance", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static Maintenance get(String name, Output id, @Nullable MaintenanceState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new Maintenance(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/MaintenanceArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/MaintenanceArgs.java new file mode 100644 index 00000000..9dd195a0 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/MaintenanceArgs.java @@ -0,0 +1,210 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.dynatrace.inputs.MaintenanceFilterArgs; +import com.pulumi.dynatrace.inputs.MaintenanceGeneralPropertiesArgs; +import com.pulumi.dynatrace.inputs.MaintenanceScheduleArgs; +import java.lang.Boolean; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class MaintenanceArgs extends com.pulumi.resources.ResourceArgs { + + public static final MaintenanceArgs Empty = new MaintenanceArgs(); + + /** + * The maintenance window is enabled or disabled + * + */ + @Import(name="enabled") + private @Nullable Output enabled; + + /** + * @return The maintenance window is enabled or disabled + * + */ + public Optional> enabled() { + return Optional.ofNullable(this.enabled); + } + + /** + * The filters of the maintenance window + * + */ + @Import(name="filters") + private @Nullable Output> filters; + + /** + * @return The filters of the maintenance window + * + */ + public Optional>> filters() { + return Optional.ofNullable(this.filters); + } + + /** + * The general properties of the maintenance window + * + */ + @Import(name="generalProperties", required=true) + private Output generalProperties; + + /** + * @return The general properties of the maintenance window + * + */ + public Output generalProperties() { + return this.generalProperties; + } + + /** + * The schedule of the maintenance window + * + */ + @Import(name="schedule", required=true) + private Output schedule; + + /** + * @return The schedule of the maintenance window + * + */ + public Output schedule() { + return this.schedule; + } + + private MaintenanceArgs() {} + + private MaintenanceArgs(MaintenanceArgs $) { + this.enabled = $.enabled; + this.filters = $.filters; + this.generalProperties = $.generalProperties; + this.schedule = $.schedule; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(MaintenanceArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private MaintenanceArgs $; + + public Builder() { + $ = new MaintenanceArgs(); + } + + public Builder(MaintenanceArgs defaults) { + $ = new MaintenanceArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param enabled The maintenance window is enabled or disabled + * + * @return builder + * + */ + public Builder enabled(@Nullable Output enabled) { + $.enabled = enabled; + return this; + } + + /** + * @param enabled The maintenance window is enabled or disabled + * + * @return builder + * + */ + public Builder enabled(Boolean enabled) { + return enabled(Output.of(enabled)); + } + + /** + * @param filters The filters of the maintenance window + * + * @return builder + * + */ + public Builder filters(@Nullable Output> filters) { + $.filters = filters; + return this; + } + + /** + * @param filters The filters of the maintenance window + * + * @return builder + * + */ + public Builder filters(List filters) { + return filters(Output.of(filters)); + } + + /** + * @param filters The filters of the maintenance window + * + * @return builder + * + */ + public Builder filters(MaintenanceFilterArgs... filters) { + return filters(List.of(filters)); + } + + /** + * @param generalProperties The general properties of the maintenance window + * + * @return builder + * + */ + public Builder generalProperties(Output generalProperties) { + $.generalProperties = generalProperties; + return this; + } + + /** + * @param generalProperties The general properties of the maintenance window + * + * @return builder + * + */ + public Builder generalProperties(MaintenanceGeneralPropertiesArgs generalProperties) { + return generalProperties(Output.of(generalProperties)); + } + + /** + * @param schedule The schedule of the maintenance window + * + * @return builder + * + */ + public Builder schedule(Output schedule) { + $.schedule = schedule; + return this; + } + + /** + * @param schedule The schedule of the maintenance window + * + * @return builder + * + */ + public Builder schedule(MaintenanceScheduleArgs schedule) { + return schedule(Output.of(schedule)); + } + + public MaintenanceArgs build() { + $.generalProperties = Objects.requireNonNull($.generalProperties, "expected parameter 'generalProperties' to be non-null"); + $.schedule = Objects.requireNonNull($.schedule, "expected parameter 'schedule' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/OpsGenieNotification.java b/sdk/java/src/main/java/com/pulumi/dynatrace/OpsGenieNotification.java new file mode 100644 index 00000000..ecd3506f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/OpsGenieNotification.java @@ -0,0 +1,157 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dynatrace.OpsGenieNotificationArgs; +import com.pulumi.dynatrace.Utilities; +import com.pulumi.dynatrace.inputs.OpsGenieNotificationState; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Optional; +import javax.annotation.Nullable; + +@ResourceType(type="dynatrace:index/opsGenieNotification:OpsGenieNotification") +public class OpsGenieNotification extends com.pulumi.resources.CustomResource { + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Export(name="active", type=Boolean.class, parameters={}) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output active() { + return this.active; + } + /** + * The API key to access OpsGenie + * + */ + @Export(name="apiKey", type=String.class, parameters={}) + private Output apiKey; + + /** + * @return The API key to access OpsGenie + * + */ + public Output> apiKey() { + return Codegen.optional(this.apiKey); + } + /** + * The region domain of the OpsGenie + * + */ + @Export(name="domain", type=String.class, parameters={}) + private Output domain; + + /** + * @return The region domain of the OpsGenie + * + */ + public Output domain() { + return this.domain; + } + /** + * The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + * + */ + @Export(name="message", type=String.class, parameters={}) + private Output message; + + /** + * @return The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + * + */ + public Output message() { + return this.message; + } + /** + * The name of the notification configuration + * + */ + @Export(name="name", type=String.class, parameters={}) + private Output name; + + /** + * @return The name of the notification configuration + * + */ + public Output name() { + return this.name; + } + /** + * The ID of the associated alerting profile + * + */ + @Export(name="profile", type=String.class, parameters={}) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public OpsGenieNotification(String name) { + this(name, OpsGenieNotificationArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public OpsGenieNotification(String name, OpsGenieNotificationArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public OpsGenieNotification(String name, OpsGenieNotificationArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/opsGenieNotification:OpsGenieNotification", name, args == null ? OpsGenieNotificationArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private OpsGenieNotification(String name, Output id, @Nullable OpsGenieNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/opsGenieNotification:OpsGenieNotification", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .additionalSecretOutputs(List.of( + "apiKey" + )) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static OpsGenieNotification get(String name, Output id, @Nullable OpsGenieNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new OpsGenieNotification(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/OpsGenieNotificationArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/OpsGenieNotificationArgs.java new file mode 100644 index 00000000..313ee4d4 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/OpsGenieNotificationArgs.java @@ -0,0 +1,273 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class OpsGenieNotificationArgs extends com.pulumi.resources.ResourceArgs { + + public static final OpsGenieNotificationArgs Empty = new OpsGenieNotificationArgs(); + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active", required=true) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output active() { + return this.active; + } + + /** + * The API key to access OpsGenie + * + */ + @Import(name="apiKey") + private @Nullable Output apiKey; + + /** + * @return The API key to access OpsGenie + * + */ + public Optional> apiKey() { + return Optional.ofNullable(this.apiKey); + } + + /** + * The region domain of the OpsGenie + * + */ + @Import(name="domain", required=true) + private Output domain; + + /** + * @return The region domain of the OpsGenie + * + */ + public Output domain() { + return this.domain; + } + + /** + * The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + * + */ + @Import(name="message", required=true) + private Output message; + + /** + * @return The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + * + */ + public Output message() { + return this.message; + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile", required=true) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + + private OpsGenieNotificationArgs() {} + + private OpsGenieNotificationArgs(OpsGenieNotificationArgs $) { + this.active = $.active; + this.apiKey = $.apiKey; + this.domain = $.domain; + this.message = $.message; + this.name = $.name; + this.profile = $.profile; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(OpsGenieNotificationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private OpsGenieNotificationArgs $; + + public Builder() { + $ = new OpsGenieNotificationArgs(); + } + + public Builder(OpsGenieNotificationArgs defaults) { + $ = new OpsGenieNotificationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param apiKey The API key to access OpsGenie + * + * @return builder + * + */ + public Builder apiKey(@Nullable Output apiKey) { + $.apiKey = apiKey; + return this; + } + + /** + * @param apiKey The API key to access OpsGenie + * + * @return builder + * + */ + public Builder apiKey(String apiKey) { + return apiKey(Output.of(apiKey)); + } + + /** + * @param domain The region domain of the OpsGenie + * + * @return builder + * + */ + public Builder domain(Output domain) { + $.domain = domain; + return this; + } + + /** + * @param domain The region domain of the OpsGenie + * + * @return builder + * + */ + public Builder domain(String domain) { + return domain(Output.of(domain)); + } + + /** + * @param message The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + * + * @return builder + * + */ + public Builder message(Output message) { + $.message = message; + return this; + } + + /** + * @param message The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + * + * @return builder + * + */ + public Builder message(String message) { + return message(Output.of(message)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + public OpsGenieNotificationArgs build() { + $.active = Objects.requireNonNull($.active, "expected parameter 'active' to be non-null"); + $.domain = Objects.requireNonNull($.domain, "expected parameter 'domain' to be non-null"); + $.message = Objects.requireNonNull($.message, "expected parameter 'message' to be non-null"); + $.profile = Objects.requireNonNull($.profile, "expected parameter 'profile' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/PagerDutyNotification.java b/sdk/java/src/main/java/com/pulumi/dynatrace/PagerDutyNotification.java new file mode 100644 index 00000000..5745bd61 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/PagerDutyNotification.java @@ -0,0 +1,157 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dynatrace.PagerDutyNotificationArgs; +import com.pulumi.dynatrace.Utilities; +import com.pulumi.dynatrace.inputs.PagerDutyNotificationState; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Optional; +import javax.annotation.Nullable; + +@ResourceType(type="dynatrace:index/pagerDutyNotification:PagerDutyNotification") +public class PagerDutyNotification extends com.pulumi.resources.CustomResource { + /** + * The name of the PagerDuty account + * + */ + @Export(name="account", type=String.class, parameters={}) + private Output account; + + /** + * @return The name of the PagerDuty account + * + */ + public Output account() { + return this.account; + } + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Export(name="active", type=Boolean.class, parameters={}) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output active() { + return this.active; + } + /** + * The API key to access PagerDuty + * + */ + @Export(name="apiKey", type=String.class, parameters={}) + private Output apiKey; + + /** + * @return The API key to access PagerDuty + * + */ + public Output> apiKey() { + return Codegen.optional(this.apiKey); + } + /** + * The name of the notification configuration + * + */ + @Export(name="name", type=String.class, parameters={}) + private Output name; + + /** + * @return The name of the notification configuration + * + */ + public Output name() { + return this.name; + } + /** + * The ID of the associated alerting profile + * + */ + @Export(name="profile", type=String.class, parameters={}) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + /** + * The name of the PagerDuty Service + * + */ + @Export(name="service", type=String.class, parameters={}) + private Output service; + + /** + * @return The name of the PagerDuty Service + * + */ + public Output service() { + return this.service; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public PagerDutyNotification(String name) { + this(name, PagerDutyNotificationArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public PagerDutyNotification(String name, PagerDutyNotificationArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public PagerDutyNotification(String name, PagerDutyNotificationArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/pagerDutyNotification:PagerDutyNotification", name, args == null ? PagerDutyNotificationArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private PagerDutyNotification(String name, Output id, @Nullable PagerDutyNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/pagerDutyNotification:PagerDutyNotification", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .additionalSecretOutputs(List.of( + "apiKey" + )) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static PagerDutyNotification get(String name, Output id, @Nullable PagerDutyNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new PagerDutyNotification(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/PagerDutyNotificationArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/PagerDutyNotificationArgs.java new file mode 100644 index 00000000..ad9a27b0 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/PagerDutyNotificationArgs.java @@ -0,0 +1,273 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class PagerDutyNotificationArgs extends com.pulumi.resources.ResourceArgs { + + public static final PagerDutyNotificationArgs Empty = new PagerDutyNotificationArgs(); + + /** + * The name of the PagerDuty account + * + */ + @Import(name="account", required=true) + private Output account; + + /** + * @return The name of the PagerDuty account + * + */ + public Output account() { + return this.account; + } + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active", required=true) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output active() { + return this.active; + } + + /** + * The API key to access PagerDuty + * + */ + @Import(name="apiKey") + private @Nullable Output apiKey; + + /** + * @return The API key to access PagerDuty + * + */ + public Optional> apiKey() { + return Optional.ofNullable(this.apiKey); + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile", required=true) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + + /** + * The name of the PagerDuty Service + * + */ + @Import(name="service", required=true) + private Output service; + + /** + * @return The name of the PagerDuty Service + * + */ + public Output service() { + return this.service; + } + + private PagerDutyNotificationArgs() {} + + private PagerDutyNotificationArgs(PagerDutyNotificationArgs $) { + this.account = $.account; + this.active = $.active; + this.apiKey = $.apiKey; + this.name = $.name; + this.profile = $.profile; + this.service = $.service; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(PagerDutyNotificationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private PagerDutyNotificationArgs $; + + public Builder() { + $ = new PagerDutyNotificationArgs(); + } + + public Builder(PagerDutyNotificationArgs defaults) { + $ = new PagerDutyNotificationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param account The name of the PagerDuty account + * + * @return builder + * + */ + public Builder account(Output account) { + $.account = account; + return this; + } + + /** + * @param account The name of the PagerDuty account + * + * @return builder + * + */ + public Builder account(String account) { + return account(Output.of(account)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param apiKey The API key to access PagerDuty + * + * @return builder + * + */ + public Builder apiKey(@Nullable Output apiKey) { + $.apiKey = apiKey; + return this; + } + + /** + * @param apiKey The API key to access PagerDuty + * + * @return builder + * + */ + public Builder apiKey(String apiKey) { + return apiKey(Output.of(apiKey)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param service The name of the PagerDuty Service + * + * @return builder + * + */ + public Builder service(Output service) { + $.service = service; + return this; + } + + /** + * @param service The name of the PagerDuty Service + * + * @return builder + * + */ + public Builder service(String service) { + return service(Output.of(service)); + } + + public PagerDutyNotificationArgs build() { + $.account = Objects.requireNonNull($.account, "expected parameter 'account' to be non-null"); + $.active = Objects.requireNonNull($.active, "expected parameter 'active' to be non-null"); + $.profile = Objects.requireNonNull($.profile, "expected parameter 'profile' to be non-null"); + $.service = Objects.requireNonNull($.service, "expected parameter 'service' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/ServiceNowNotification.java b/sdk/java/src/main/java/com/pulumi/dynatrace/ServiceNowNotification.java new file mode 100644 index 00000000..891b4cff --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/ServiceNowNotification.java @@ -0,0 +1,213 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dynatrace.ServiceNowNotificationArgs; +import com.pulumi.dynatrace.Utilities; +import com.pulumi.dynatrace.inputs.ServiceNowNotificationState; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Optional; +import javax.annotation.Nullable; + +@ResourceType(type="dynatrace:index/serviceNowNotification:ServiceNowNotification") +public class ServiceNowNotification extends com.pulumi.resources.CustomResource { + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Export(name="active", type=Boolean.class, parameters={}) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output active() { + return this.active; + } + /** + * Send events into ServiceNow ITOM + * + */ + @Export(name="events", type=Boolean.class, parameters={}) + private Output events; + + /** + * @return Send events into ServiceNow ITOM + * + */ + public Output> events() { + return Codegen.optional(this.events); + } + /** + * Send incidents into ServiceNow ITSM + * + */ + @Export(name="incidents", type=Boolean.class, parameters={}) + private Output incidents; + + /** + * @return Send incidents into ServiceNow ITSM + * + */ + public Output incidents() { + return this.incidents; + } + /** + * The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + * + */ + @Export(name="instance", type=String.class, parameters={}) + private Output instance; + + /** + * @return The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + * + */ + public Output> instance() { + return Codegen.optional(this.instance); + } + /** + * The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Export(name="message", type=String.class, parameters={}) + private Output message; + + /** + * @return The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Output message() { + return this.message; + } + /** + * The name of the notification configuration + * + */ + @Export(name="name", type=String.class, parameters={}) + private Output name; + + /** + * @return The name of the notification configuration + * + */ + public Output name() { + return this.name; + } + /** + * The password to the ServiceNow account + * + */ + @Export(name="password", type=String.class, parameters={}) + private Output password; + + /** + * @return The password to the ServiceNow account + * + */ + public Output> password() { + return Codegen.optional(this.password); + } + /** + * The ID of the associated alerting profile + * + */ + @Export(name="profile", type=String.class, parameters={}) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + /** + * The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + * + */ + @Export(name="url", type=String.class, parameters={}) + private Output url; + + /** + * @return The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + * + */ + public Output> url() { + return Codegen.optional(this.url); + } + /** + * The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + * + */ + @Export(name="username", type=String.class, parameters={}) + private Output username; + + /** + * @return The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + * + */ + public Output username() { + return this.username; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public ServiceNowNotification(String name) { + this(name, ServiceNowNotificationArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public ServiceNowNotification(String name, ServiceNowNotificationArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public ServiceNowNotification(String name, ServiceNowNotificationArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/serviceNowNotification:ServiceNowNotification", name, args == null ? ServiceNowNotificationArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private ServiceNowNotification(String name, Output id, @Nullable ServiceNowNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/serviceNowNotification:ServiceNowNotification", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .additionalSecretOutputs(List.of( + "password" + )) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static ServiceNowNotification get(String name, Output id, @Nullable ServiceNowNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new ServiceNowNotification(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/ServiceNowNotificationArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/ServiceNowNotificationArgs.java new file mode 100644 index 00000000..16c03021 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/ServiceNowNotificationArgs.java @@ -0,0 +1,422 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ServiceNowNotificationArgs extends com.pulumi.resources.ResourceArgs { + + public static final ServiceNowNotificationArgs Empty = new ServiceNowNotificationArgs(); + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active", required=true) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output active() { + return this.active; + } + + /** + * Send events into ServiceNow ITOM + * + */ + @Import(name="events") + private @Nullable Output events; + + /** + * @return Send events into ServiceNow ITOM + * + */ + public Optional> events() { + return Optional.ofNullable(this.events); + } + + /** + * Send incidents into ServiceNow ITSM + * + */ + @Import(name="incidents", required=true) + private Output incidents; + + /** + * @return Send incidents into ServiceNow ITSM + * + */ + public Output incidents() { + return this.incidents; + } + + /** + * The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + * + */ + @Import(name="instance") + private @Nullable Output instance; + + /** + * @return The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + * + */ + public Optional> instance() { + return Optional.ofNullable(this.instance); + } + + /** + * The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Import(name="message", required=true) + private Output message; + + /** + * @return The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Output message() { + return this.message; + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The password to the ServiceNow account + * + */ + @Import(name="password") + private @Nullable Output password; + + /** + * @return The password to the ServiceNow account + * + */ + public Optional> password() { + return Optional.ofNullable(this.password); + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile", required=true) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + + /** + * The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + * + */ + @Import(name="url") + private @Nullable Output url; + + /** + * @return The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + * + */ + public Optional> url() { + return Optional.ofNullable(this.url); + } + + /** + * The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + * + */ + @Import(name="username", required=true) + private Output username; + + /** + * @return The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + * + */ + public Output username() { + return this.username; + } + + private ServiceNowNotificationArgs() {} + + private ServiceNowNotificationArgs(ServiceNowNotificationArgs $) { + this.active = $.active; + this.events = $.events; + this.incidents = $.incidents; + this.instance = $.instance; + this.message = $.message; + this.name = $.name; + this.password = $.password; + this.profile = $.profile; + this.url = $.url; + this.username = $.username; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ServiceNowNotificationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ServiceNowNotificationArgs $; + + public Builder() { + $ = new ServiceNowNotificationArgs(); + } + + public Builder(ServiceNowNotificationArgs defaults) { + $ = new ServiceNowNotificationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param events Send events into ServiceNow ITOM + * + * @return builder + * + */ + public Builder events(@Nullable Output events) { + $.events = events; + return this; + } + + /** + * @param events Send events into ServiceNow ITOM + * + * @return builder + * + */ + public Builder events(Boolean events) { + return events(Output.of(events)); + } + + /** + * @param incidents Send incidents into ServiceNow ITSM + * + * @return builder + * + */ + public Builder incidents(Output incidents) { + $.incidents = incidents; + return this; + } + + /** + * @param incidents Send incidents into ServiceNow ITSM + * + * @return builder + * + */ + public Builder incidents(Boolean incidents) { + return incidents(Output.of(incidents)); + } + + /** + * @param instance The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + * + * @return builder + * + */ + public Builder instance(@Nullable Output instance) { + $.instance = instance; + return this; + } + + /** + * @param instance The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + * + * @return builder + * + */ + public Builder instance(String instance) { + return instance(Output.of(instance)); + } + + /** + * @param message The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder message(Output message) { + $.message = message; + return this; + } + + /** + * @param message The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder message(String message) { + return message(Output.of(message)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param password The password to the ServiceNow account + * + * @return builder + * + */ + public Builder password(@Nullable Output password) { + $.password = password; + return this; + } + + /** + * @param password The password to the ServiceNow account + * + * @return builder + * + */ + public Builder password(String password) { + return password(Output.of(password)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param url The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + * + * @return builder + * + */ + public Builder url(@Nullable Output url) { + $.url = url; + return this; + } + + /** + * @param url The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + * + * @return builder + * + */ + public Builder url(String url) { + return url(Output.of(url)); + } + + /** + * @param username The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + * + * @return builder + * + */ + public Builder username(Output username) { + $.username = username; + return this; + } + + /** + * @param username The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + * + * @return builder + * + */ + public Builder username(String username) { + return username(Output.of(username)); + } + + public ServiceNowNotificationArgs build() { + $.active = Objects.requireNonNull($.active, "expected parameter 'active' to be non-null"); + $.incidents = Objects.requireNonNull($.incidents, "expected parameter 'incidents' to be non-null"); + $.message = Objects.requireNonNull($.message, "expected parameter 'message' to be non-null"); + $.profile = Objects.requireNonNull($.profile, "expected parameter 'profile' to be non-null"); + $.username = Objects.requireNonNull($.username, "expected parameter 'username' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/SlackNotification.java b/sdk/java/src/main/java/com/pulumi/dynatrace/SlackNotification.java new file mode 100644 index 00000000..e3014dda --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/SlackNotification.java @@ -0,0 +1,156 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dynatrace.SlackNotificationArgs; +import com.pulumi.dynatrace.Utilities; +import com.pulumi.dynatrace.inputs.SlackNotificationState; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import javax.annotation.Nullable; + +@ResourceType(type="dynatrace:index/slackNotification:SlackNotification") +public class SlackNotification extends com.pulumi.resources.CustomResource { + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Export(name="active", type=Boolean.class, parameters={}) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output active() { + return this.active; + } + /** + * The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + * + */ + @Export(name="channel", type=String.class, parameters={}) + private Output channel; + + /** + * @return The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + * + */ + public Output channel() { + return this.channel; + } + /** + * The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Export(name="message", type=String.class, parameters={}) + private Output message; + + /** + * @return The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Output message() { + return this.message; + } + /** + * The name of the notification configuration + * + */ + @Export(name="name", type=String.class, parameters={}) + private Output name; + + /** + * @return The name of the notification configuration + * + */ + public Output name() { + return this.name; + } + /** + * The ID of the associated alerting profile + * + */ + @Export(name="profile", type=String.class, parameters={}) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + /** + * The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + * + */ + @Export(name="url", type=String.class, parameters={}) + private Output url; + + /** + * @return The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + * + */ + public Output url() { + return this.url; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public SlackNotification(String name) { + this(name, SlackNotificationArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public SlackNotification(String name, SlackNotificationArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public SlackNotification(String name, SlackNotificationArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/slackNotification:SlackNotification", name, args == null ? SlackNotificationArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private SlackNotification(String name, Output id, @Nullable SlackNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/slackNotification:SlackNotification", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .additionalSecretOutputs(List.of( + "url" + )) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static SlackNotification get(String name, Output id, @Nullable SlackNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new SlackNotification(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/SlackNotificationArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/SlackNotificationArgs.java new file mode 100644 index 00000000..33c99aff --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/SlackNotificationArgs.java @@ -0,0 +1,274 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class SlackNotificationArgs extends com.pulumi.resources.ResourceArgs { + + public static final SlackNotificationArgs Empty = new SlackNotificationArgs(); + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active", required=true) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output active() { + return this.active; + } + + /** + * The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + * + */ + @Import(name="channel", required=true) + private Output channel; + + /** + * @return The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + * + */ + public Output channel() { + return this.channel; + } + + /** + * The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Import(name="message", required=true) + private Output message; + + /** + * @return The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Output message() { + return this.message; + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile", required=true) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + + /** + * The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + * + */ + @Import(name="url", required=true) + private Output url; + + /** + * @return The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + * + */ + public Output url() { + return this.url; + } + + private SlackNotificationArgs() {} + + private SlackNotificationArgs(SlackNotificationArgs $) { + this.active = $.active; + this.channel = $.channel; + this.message = $.message; + this.name = $.name; + this.profile = $.profile; + this.url = $.url; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SlackNotificationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SlackNotificationArgs $; + + public Builder() { + $ = new SlackNotificationArgs(); + } + + public Builder(SlackNotificationArgs defaults) { + $ = new SlackNotificationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param channel The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + * + * @return builder + * + */ + public Builder channel(Output channel) { + $.channel = channel; + return this; + } + + /** + * @param channel The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + * + * @return builder + * + */ + public Builder channel(String channel) { + return channel(Output.of(channel)); + } + + /** + * @param message The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder message(Output message) { + $.message = message; + return this; + } + + /** + * @param message The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder message(String message) { + return message(Output.of(message)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param url The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + * + * @return builder + * + */ + public Builder url(Output url) { + $.url = url; + return this; + } + + /** + * @param url The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + * + * @return builder + * + */ + public Builder url(String url) { + return url(Output.of(url)); + } + + public SlackNotificationArgs build() { + $.active = Objects.requireNonNull($.active, "expected parameter 'active' to be non-null"); + $.channel = Objects.requireNonNull($.channel, "expected parameter 'channel' to be non-null"); + $.message = Objects.requireNonNull($.message, "expected parameter 'message' to be non-null"); + $.profile = Objects.requireNonNull($.profile, "expected parameter 'profile' to be non-null"); + $.url = Objects.requireNonNull($.url, "expected parameter 'url' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/TrrelloNotification.java b/sdk/java/src/main/java/com/pulumi/dynatrace/TrrelloNotification.java new file mode 100644 index 00000000..a825c277 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/TrrelloNotification.java @@ -0,0 +1,209 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dynatrace.TrrelloNotificationArgs; +import com.pulumi.dynatrace.Utilities; +import com.pulumi.dynatrace.inputs.TrrelloNotificationState; +import java.lang.Boolean; +import java.lang.String; +import java.util.Optional; +import javax.annotation.Nullable; + +@ResourceType(type="dynatrace:index/trrelloNotification:TrrelloNotification") +public class TrrelloNotification extends com.pulumi.resources.CustomResource { + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Export(name="active", type=Boolean.class, parameters={}) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output active() { + return this.active; + } + /** + * The application key for the Trello account + * + */ + @Export(name="applicationKey", type=String.class, parameters={}) + private Output applicationKey; + + /** + * @return The application key for the Trello account + * + */ + public Output applicationKey() { + return this.applicationKey; + } + /** + * The application token for the Trello account + * + */ + @Export(name="authorizationToken", type=String.class, parameters={}) + private Output authorizationToken; + + /** + * @return The application token for the Trello account + * + */ + public Output> authorizationToken() { + return Codegen.optional(this.authorizationToken); + } + /** + * The Trello board to which the card should be assigned + * + */ + @Export(name="boardId", type=String.class, parameters={}) + private Output boardId; + + /** + * @return The Trello board to which the card should be assigned + * + */ + public Output boardId() { + return this.boardId; + } + /** + * The description of the Trello card. You can use same placeholders as in card text + * + */ + @Export(name="description", type=String.class, parameters={}) + private Output description; + + /** + * @return The description of the Trello card. You can use same placeholders as in card text + * + */ + public Output description() { + return this.description; + } + /** + * The Trello list to which the card should be assigned + * + */ + @Export(name="listId", type=String.class, parameters={}) + private Output listId; + + /** + * @return The Trello list to which the card should be assigned + * + */ + public Output listId() { + return this.listId; + } + /** + * The name of the notification configuration + * + */ + @Export(name="name", type=String.class, parameters={}) + private Output name; + + /** + * @return The name of the notification configuration + * + */ + public Output name() { + return this.name; + } + /** + * The ID of the associated alerting profile + * + */ + @Export(name="profile", type=String.class, parameters={}) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + /** + * The Trello list to which the card of the resolved problem should be assigned + * + */ + @Export(name="resolvedListId", type=String.class, parameters={}) + private Output resolvedListId; + + /** + * @return The Trello list to which the card of the resolved problem should be assigned + * + */ + public Output resolvedListId() { + return this.resolvedListId; + } + /** + * The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Export(name="text", type=String.class, parameters={}) + private Output text; + + /** + * @return The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Output text() { + return this.text; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public TrrelloNotification(String name) { + this(name, TrrelloNotificationArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public TrrelloNotification(String name, TrrelloNotificationArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public TrrelloNotification(String name, TrrelloNotificationArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/trrelloNotification:TrrelloNotification", name, args == null ? TrrelloNotificationArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private TrrelloNotification(String name, Output id, @Nullable TrrelloNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/trrelloNotification:TrrelloNotification", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static TrrelloNotification get(String name, Output id, @Nullable TrrelloNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new TrrelloNotification(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/TrrelloNotificationArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/TrrelloNotificationArgs.java new file mode 100644 index 00000000..bbdbd5b8 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/TrrelloNotificationArgs.java @@ -0,0 +1,425 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class TrrelloNotificationArgs extends com.pulumi.resources.ResourceArgs { + + public static final TrrelloNotificationArgs Empty = new TrrelloNotificationArgs(); + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active", required=true) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output active() { + return this.active; + } + + /** + * The application key for the Trello account + * + */ + @Import(name="applicationKey", required=true) + private Output applicationKey; + + /** + * @return The application key for the Trello account + * + */ + public Output applicationKey() { + return this.applicationKey; + } + + /** + * The application token for the Trello account + * + */ + @Import(name="authorizationToken") + private @Nullable Output authorizationToken; + + /** + * @return The application token for the Trello account + * + */ + public Optional> authorizationToken() { + return Optional.ofNullable(this.authorizationToken); + } + + /** + * The Trello board to which the card should be assigned + * + */ + @Import(name="boardId", required=true) + private Output boardId; + + /** + * @return The Trello board to which the card should be assigned + * + */ + public Output boardId() { + return this.boardId; + } + + /** + * The description of the Trello card. You can use same placeholders as in card text + * + */ + @Import(name="description", required=true) + private Output description; + + /** + * @return The description of the Trello card. You can use same placeholders as in card text + * + */ + public Output description() { + return this.description; + } + + /** + * The Trello list to which the card should be assigned + * + */ + @Import(name="listId", required=true) + private Output listId; + + /** + * @return The Trello list to which the card should be assigned + * + */ + public Output listId() { + return this.listId; + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile", required=true) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + + /** + * The Trello list to which the card of the resolved problem should be assigned + * + */ + @Import(name="resolvedListId", required=true) + private Output resolvedListId; + + /** + * @return The Trello list to which the card of the resolved problem should be assigned + * + */ + public Output resolvedListId() { + return this.resolvedListId; + } + + /** + * The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Import(name="text", required=true) + private Output text; + + /** + * @return The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Output text() { + return this.text; + } + + private TrrelloNotificationArgs() {} + + private TrrelloNotificationArgs(TrrelloNotificationArgs $) { + this.active = $.active; + this.applicationKey = $.applicationKey; + this.authorizationToken = $.authorizationToken; + this.boardId = $.boardId; + this.description = $.description; + this.listId = $.listId; + this.name = $.name; + this.profile = $.profile; + this.resolvedListId = $.resolvedListId; + this.text = $.text; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(TrrelloNotificationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private TrrelloNotificationArgs $; + + public Builder() { + $ = new TrrelloNotificationArgs(); + } + + public Builder(TrrelloNotificationArgs defaults) { + $ = new TrrelloNotificationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param applicationKey The application key for the Trello account + * + * @return builder + * + */ + public Builder applicationKey(Output applicationKey) { + $.applicationKey = applicationKey; + return this; + } + + /** + * @param applicationKey The application key for the Trello account + * + * @return builder + * + */ + public Builder applicationKey(String applicationKey) { + return applicationKey(Output.of(applicationKey)); + } + + /** + * @param authorizationToken The application token for the Trello account + * + * @return builder + * + */ + public Builder authorizationToken(@Nullable Output authorizationToken) { + $.authorizationToken = authorizationToken; + return this; + } + + /** + * @param authorizationToken The application token for the Trello account + * + * @return builder + * + */ + public Builder authorizationToken(String authorizationToken) { + return authorizationToken(Output.of(authorizationToken)); + } + + /** + * @param boardId The Trello board to which the card should be assigned + * + * @return builder + * + */ + public Builder boardId(Output boardId) { + $.boardId = boardId; + return this; + } + + /** + * @param boardId The Trello board to which the card should be assigned + * + * @return builder + * + */ + public Builder boardId(String boardId) { + return boardId(Output.of(boardId)); + } + + /** + * @param description The description of the Trello card. You can use same placeholders as in card text + * + * @return builder + * + */ + public Builder description(Output description) { + $.description = description; + return this; + } + + /** + * @param description The description of the Trello card. You can use same placeholders as in card text + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param listId The Trello list to which the card should be assigned + * + * @return builder + * + */ + public Builder listId(Output listId) { + $.listId = listId; + return this; + } + + /** + * @param listId The Trello list to which the card should be assigned + * + * @return builder + * + */ + public Builder listId(String listId) { + return listId(Output.of(listId)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param resolvedListId The Trello list to which the card of the resolved problem should be assigned + * + * @return builder + * + */ + public Builder resolvedListId(Output resolvedListId) { + $.resolvedListId = resolvedListId; + return this; + } + + /** + * @param resolvedListId The Trello list to which the card of the resolved problem should be assigned + * + * @return builder + * + */ + public Builder resolvedListId(String resolvedListId) { + return resolvedListId(Output.of(resolvedListId)); + } + + /** + * @param text The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder text(Output text) { + $.text = text; + return this; + } + + /** + * @param text The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder text(String text) { + return text(Output.of(text)); + } + + public TrrelloNotificationArgs build() { + $.active = Objects.requireNonNull($.active, "expected parameter 'active' to be non-null"); + $.applicationKey = Objects.requireNonNull($.applicationKey, "expected parameter 'applicationKey' to be non-null"); + $.boardId = Objects.requireNonNull($.boardId, "expected parameter 'boardId' to be non-null"); + $.description = Objects.requireNonNull($.description, "expected parameter 'description' to be non-null"); + $.listId = Objects.requireNonNull($.listId, "expected parameter 'listId' to be non-null"); + $.profile = Objects.requireNonNull($.profile, "expected parameter 'profile' to be non-null"); + $.resolvedListId = Objects.requireNonNull($.resolvedListId, "expected parameter 'resolvedListId' to be non-null"); + $.text = Objects.requireNonNull($.text, "expected parameter 'text' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/VictorOpsNotification.java b/sdk/java/src/main/java/com/pulumi/dynatrace/VictorOpsNotification.java new file mode 100644 index 00000000..92d951c5 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/VictorOpsNotification.java @@ -0,0 +1,157 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dynatrace.Utilities; +import com.pulumi.dynatrace.VictorOpsNotificationArgs; +import com.pulumi.dynatrace.inputs.VictorOpsNotificationState; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Optional; +import javax.annotation.Nullable; + +@ResourceType(type="dynatrace:index/victorOpsNotification:VictorOpsNotification") +public class VictorOpsNotification extends com.pulumi.resources.CustomResource { + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Export(name="active", type=Boolean.class, parameters={}) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output active() { + return this.active; + } + /** + * The API key for the target VictorOps account + * + */ + @Export(name="apiKey", type=String.class, parameters={}) + private Output apiKey; + + /** + * @return The API key for the target VictorOps account + * + */ + public Output> apiKey() { + return Codegen.optional(this.apiKey); + } + /** + * The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + * + */ + @Export(name="message", type=String.class, parameters={}) + private Output message; + + /** + * @return The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + * + */ + public Output message() { + return this.message; + } + /** + * The name of the notification configuration + * + */ + @Export(name="name", type=String.class, parameters={}) + private Output name; + + /** + * @return The name of the notification configuration + * + */ + public Output name() { + return this.name; + } + /** + * The ID of the associated alerting profile + * + */ + @Export(name="profile", type=String.class, parameters={}) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + /** + * The routing key, defining the group to be notified + * + */ + @Export(name="routingKey", type=String.class, parameters={}) + private Output routingKey; + + /** + * @return The routing key, defining the group to be notified + * + */ + public Output routingKey() { + return this.routingKey; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public VictorOpsNotification(String name) { + this(name, VictorOpsNotificationArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public VictorOpsNotification(String name, VictorOpsNotificationArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public VictorOpsNotification(String name, VictorOpsNotificationArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/victorOpsNotification:VictorOpsNotification", name, args == null ? VictorOpsNotificationArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private VictorOpsNotification(String name, Output id, @Nullable VictorOpsNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/victorOpsNotification:VictorOpsNotification", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .additionalSecretOutputs(List.of( + "apiKey" + )) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static VictorOpsNotification get(String name, Output id, @Nullable VictorOpsNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new VictorOpsNotification(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/VictorOpsNotificationArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/VictorOpsNotificationArgs.java new file mode 100644 index 00000000..ecdbbc69 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/VictorOpsNotificationArgs.java @@ -0,0 +1,273 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VictorOpsNotificationArgs extends com.pulumi.resources.ResourceArgs { + + public static final VictorOpsNotificationArgs Empty = new VictorOpsNotificationArgs(); + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active", required=true) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output active() { + return this.active; + } + + /** + * The API key for the target VictorOps account + * + */ + @Import(name="apiKey") + private @Nullable Output apiKey; + + /** + * @return The API key for the target VictorOps account + * + */ + public Optional> apiKey() { + return Optional.ofNullable(this.apiKey); + } + + /** + * The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + * + */ + @Import(name="message", required=true) + private Output message; + + /** + * @return The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + * + */ + public Output message() { + return this.message; + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile", required=true) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + + /** + * The routing key, defining the group to be notified + * + */ + @Import(name="routingKey", required=true) + private Output routingKey; + + /** + * @return The routing key, defining the group to be notified + * + */ + public Output routingKey() { + return this.routingKey; + } + + private VictorOpsNotificationArgs() {} + + private VictorOpsNotificationArgs(VictorOpsNotificationArgs $) { + this.active = $.active; + this.apiKey = $.apiKey; + this.message = $.message; + this.name = $.name; + this.profile = $.profile; + this.routingKey = $.routingKey; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VictorOpsNotificationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VictorOpsNotificationArgs $; + + public Builder() { + $ = new VictorOpsNotificationArgs(); + } + + public Builder(VictorOpsNotificationArgs defaults) { + $ = new VictorOpsNotificationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param apiKey The API key for the target VictorOps account + * + * @return builder + * + */ + public Builder apiKey(@Nullable Output apiKey) { + $.apiKey = apiKey; + return this; + } + + /** + * @param apiKey The API key for the target VictorOps account + * + * @return builder + * + */ + public Builder apiKey(String apiKey) { + return apiKey(Output.of(apiKey)); + } + + /** + * @param message The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + * + * @return builder + * + */ + public Builder message(Output message) { + $.message = message; + return this; + } + + /** + * @param message The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + * + * @return builder + * + */ + public Builder message(String message) { + return message(Output.of(message)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param routingKey The routing key, defining the group to be notified + * + * @return builder + * + */ + public Builder routingKey(Output routingKey) { + $.routingKey = routingKey; + return this; + } + + /** + * @param routingKey The routing key, defining the group to be notified + * + * @return builder + * + */ + public Builder routingKey(String routingKey) { + return routingKey(Output.of(routingKey)); + } + + public VictorOpsNotificationArgs build() { + $.active = Objects.requireNonNull($.active, "expected parameter 'active' to be non-null"); + $.message = Objects.requireNonNull($.message, "expected parameter 'message' to be non-null"); + $.profile = Objects.requireNonNull($.profile, "expected parameter 'profile' to be non-null"); + $.routingKey = Objects.requireNonNull($.routingKey, "expected parameter 'routingKey' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/WebhookNotification.java b/sdk/java/src/main/java/com/pulumi/dynatrace/WebhookNotification.java new file mode 100644 index 00000000..32c04f7b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/WebhookNotification.java @@ -0,0 +1,196 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dynatrace.Utilities; +import com.pulumi.dynatrace.WebhookNotificationArgs; +import com.pulumi.dynatrace.inputs.WebhookNotificationState; +import com.pulumi.dynatrace.outputs.WebhookNotificationHeaders; +import java.lang.Boolean; +import java.lang.String; +import java.util.Optional; +import javax.annotation.Nullable; + +@ResourceType(type="dynatrace:index/webhookNotification:WebhookNotification") +public class WebhookNotification extends com.pulumi.resources.CustomResource { + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Export(name="active", type=Boolean.class, parameters={}) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output active() { + return this.active; + } + /** + * A list of the additional HTTP headers + * + */ + @Export(name="headers", type=WebhookNotificationHeaders.class, parameters={}) + private Output headers; + + /** + * @return A list of the additional HTTP headers + * + */ + public Output> headers() { + return Codegen.optional(this.headers); + } + /** + * Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + */ + @Export(name="insecure", type=Boolean.class, parameters={}) + private Output insecure; + + /** + * @return Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + */ + public Output> insecure() { + return Codegen.optional(this.insecure); + } + /** + * The name of the notification configuration + * + */ + @Export(name="name", type=String.class, parameters={}) + private Output name; + + /** + * @return The name of the notification configuration + * + */ + public Output name() { + return this.name; + } + /** + * Send email if problem is closed + * + */ + @Export(name="notifyClosedProblems", type=Boolean.class, parameters={}) + private Output notifyClosedProblems; + + /** + * @return Send email if problem is closed + * + */ + public Output> notifyClosedProblems() { + return Codegen.optional(this.notifyClosedProblems); + } + /** + * Call webhook if new events merge into existing problems + * + */ + @Export(name="notifyEventMerges", type=Boolean.class, parameters={}) + private Output notifyEventMerges; + + /** + * @return Call webhook if new events merge into existing problems + * + */ + public Output> notifyEventMerges() { + return Codegen.optional(this.notifyEventMerges); + } + /** + * The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Export(name="payload", type=String.class, parameters={}) + private Output payload; + + /** + * @return The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Output payload() { + return this.payload; + } + /** + * The ID of the associated alerting profile + * + */ + @Export(name="profile", type=String.class, parameters={}) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + /** + * The URL of the WebHook endpoint + * + */ + @Export(name="url", type=String.class, parameters={}) + private Output url; + + /** + * @return The URL of the WebHook endpoint + * + */ + public Output url() { + return this.url; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public WebhookNotification(String name) { + this(name, WebhookNotificationArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public WebhookNotification(String name, WebhookNotificationArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public WebhookNotification(String name, WebhookNotificationArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/webhookNotification:WebhookNotification", name, args == null ? WebhookNotificationArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private WebhookNotification(String name, Output id, @Nullable WebhookNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/webhookNotification:WebhookNotification", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static WebhookNotification get(String name, Output id, @Nullable WebhookNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new WebhookNotification(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/WebhookNotificationArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/WebhookNotificationArgs.java new file mode 100644 index 00000000..fefd18e3 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/WebhookNotificationArgs.java @@ -0,0 +1,385 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.dynatrace.inputs.WebhookNotificationHeadersArgs; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class WebhookNotificationArgs extends com.pulumi.resources.ResourceArgs { + + public static final WebhookNotificationArgs Empty = new WebhookNotificationArgs(); + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active", required=true) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output active() { + return this.active; + } + + /** + * A list of the additional HTTP headers + * + */ + @Import(name="headers") + private @Nullable Output headers; + + /** + * @return A list of the additional HTTP headers + * + */ + public Optional> headers() { + return Optional.ofNullable(this.headers); + } + + /** + * Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + */ + @Import(name="insecure") + private @Nullable Output insecure; + + /** + * @return Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + */ + public Optional> insecure() { + return Optional.ofNullable(this.insecure); + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * Send email if problem is closed + * + */ + @Import(name="notifyClosedProblems") + private @Nullable Output notifyClosedProblems; + + /** + * @return Send email if problem is closed + * + */ + public Optional> notifyClosedProblems() { + return Optional.ofNullable(this.notifyClosedProblems); + } + + /** + * Call webhook if new events merge into existing problems + * + */ + @Import(name="notifyEventMerges") + private @Nullable Output notifyEventMerges; + + /** + * @return Call webhook if new events merge into existing problems + * + */ + public Optional> notifyEventMerges() { + return Optional.ofNullable(this.notifyEventMerges); + } + + /** + * The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Import(name="payload", required=true) + private Output payload; + + /** + * @return The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Output payload() { + return this.payload; + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile", required=true) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + + /** + * The URL of the WebHook endpoint + * + */ + @Import(name="url", required=true) + private Output url; + + /** + * @return The URL of the WebHook endpoint + * + */ + public Output url() { + return this.url; + } + + private WebhookNotificationArgs() {} + + private WebhookNotificationArgs(WebhookNotificationArgs $) { + this.active = $.active; + this.headers = $.headers; + this.insecure = $.insecure; + this.name = $.name; + this.notifyClosedProblems = $.notifyClosedProblems; + this.notifyEventMerges = $.notifyEventMerges; + this.payload = $.payload; + this.profile = $.profile; + this.url = $.url; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(WebhookNotificationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private WebhookNotificationArgs $; + + public Builder() { + $ = new WebhookNotificationArgs(); + } + + public Builder(WebhookNotificationArgs defaults) { + $ = new WebhookNotificationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param headers A list of the additional HTTP headers + * + * @return builder + * + */ + public Builder headers(@Nullable Output headers) { + $.headers = headers; + return this; + } + + /** + * @param headers A list of the additional HTTP headers + * + * @return builder + * + */ + public Builder headers(WebhookNotificationHeadersArgs headers) { + return headers(Output.of(headers)); + } + + /** + * @param insecure Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + * @return builder + * + */ + public Builder insecure(@Nullable Output insecure) { + $.insecure = insecure; + return this; + } + + /** + * @param insecure Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + * @return builder + * + */ + public Builder insecure(Boolean insecure) { + return insecure(Output.of(insecure)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param notifyClosedProblems Send email if problem is closed + * + * @return builder + * + */ + public Builder notifyClosedProblems(@Nullable Output notifyClosedProblems) { + $.notifyClosedProblems = notifyClosedProblems; + return this; + } + + /** + * @param notifyClosedProblems Send email if problem is closed + * + * @return builder + * + */ + public Builder notifyClosedProblems(Boolean notifyClosedProblems) { + return notifyClosedProblems(Output.of(notifyClosedProblems)); + } + + /** + * @param notifyEventMerges Call webhook if new events merge into existing problems + * + * @return builder + * + */ + public Builder notifyEventMerges(@Nullable Output notifyEventMerges) { + $.notifyEventMerges = notifyEventMerges; + return this; + } + + /** + * @param notifyEventMerges Call webhook if new events merge into existing problems + * + * @return builder + * + */ + public Builder notifyEventMerges(Boolean notifyEventMerges) { + return notifyEventMerges(Output.of(notifyEventMerges)); + } + + /** + * @param payload The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder payload(Output payload) { + $.payload = payload; + return this; + } + + /** + * @param payload The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder payload(String payload) { + return payload(Output.of(payload)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param url The URL of the WebHook endpoint + * + * @return builder + * + */ + public Builder url(Output url) { + $.url = url; + return this; + } + + /** + * @param url The URL of the WebHook endpoint + * + * @return builder + * + */ + public Builder url(String url) { + return url(Output.of(url)); + } + + public WebhookNotificationArgs build() { + $.active = Objects.requireNonNull($.active, "expected parameter 'active' to be non-null"); + $.payload = Objects.requireNonNull($.payload, "expected parameter 'payload' to be non-null"); + $.profile = Objects.requireNonNull($.profile, "expected parameter 'profile' to be non-null"); + $.url = Objects.requireNonNull($.url, "expected parameter 'url' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/XmattersNotification.java b/sdk/java/src/main/java/com/pulumi/dynatrace/XmattersNotification.java new file mode 100644 index 00000000..5fa9e598 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/XmattersNotification.java @@ -0,0 +1,168 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.dynatrace.Utilities; +import com.pulumi.dynatrace.XmattersNotificationArgs; +import com.pulumi.dynatrace.inputs.XmattersNotificationState; +import com.pulumi.dynatrace.outputs.XmattersNotificationHeaders; +import java.lang.Boolean; +import java.lang.String; +import java.util.Optional; +import javax.annotation.Nullable; + +@ResourceType(type="dynatrace:index/xmattersNotification:XmattersNotification") +public class XmattersNotification extends com.pulumi.resources.CustomResource { + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Export(name="active", type=Boolean.class, parameters={}) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output active() { + return this.active; + } + /** + * A list of the additional HTTP headers + * + */ + @Export(name="headers", type=XmattersNotificationHeaders.class, parameters={}) + private Output headers; + + /** + * @return A list of the additional HTTP headers + * + */ + public Output> headers() { + return Codegen.optional(this.headers); + } + /** + * Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + */ + @Export(name="insecure", type=Boolean.class, parameters={}) + private Output insecure; + + /** + * @return Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + */ + public Output> insecure() { + return Codegen.optional(this.insecure); + } + /** + * The name of the notification configuration + * + */ + @Export(name="name", type=String.class, parameters={}) + private Output name; + + /** + * @return The name of the notification configuration + * + */ + public Output name() { + return this.name; + } + /** + * The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Export(name="payload", type=String.class, parameters={}) + private Output payload; + + /** + * @return The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Output payload() { + return this.payload; + } + /** + * The ID of the associated alerting profile + * + */ + @Export(name="profile", type=String.class, parameters={}) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + /** + * The URL of the WebHook endpoint + * + */ + @Export(name="url", type=String.class, parameters={}) + private Output url; + + /** + * @return The URL of the WebHook endpoint + * + */ + public Output url() { + return this.url; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public XmattersNotification(String name) { + this(name, XmattersNotificationArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public XmattersNotification(String name, XmattersNotificationArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public XmattersNotification(String name, XmattersNotificationArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/xmattersNotification:XmattersNotification", name, args == null ? XmattersNotificationArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private XmattersNotification(String name, Output id, @Nullable XmattersNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("dynatrace:index/xmattersNotification:XmattersNotification", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static XmattersNotification get(String name, Output id, @Nullable XmattersNotificationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new XmattersNotification(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/XmattersNotificationArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/XmattersNotificationArgs.java new file mode 100644 index 00000000..bca45ef3 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/XmattersNotificationArgs.java @@ -0,0 +1,311 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.dynatrace.inputs.XmattersNotificationHeadersArgs; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class XmattersNotificationArgs extends com.pulumi.resources.ResourceArgs { + + public static final XmattersNotificationArgs Empty = new XmattersNotificationArgs(); + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active", required=true) + private Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Output active() { + return this.active; + } + + /** + * A list of the additional HTTP headers + * + */ + @Import(name="headers") + private @Nullable Output headers; + + /** + * @return A list of the additional HTTP headers + * + */ + public Optional> headers() { + return Optional.ofNullable(this.headers); + } + + /** + * Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + */ + @Import(name="insecure") + private @Nullable Output insecure; + + /** + * @return Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + */ + public Optional> insecure() { + return Optional.ofNullable(this.insecure); + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Import(name="payload", required=true) + private Output payload; + + /** + * @return The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Output payload() { + return this.payload; + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile", required=true) + private Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Output profile() { + return this.profile; + } + + /** + * The URL of the WebHook endpoint + * + */ + @Import(name="url", required=true) + private Output url; + + /** + * @return The URL of the WebHook endpoint + * + */ + public Output url() { + return this.url; + } + + private XmattersNotificationArgs() {} + + private XmattersNotificationArgs(XmattersNotificationArgs $) { + this.active = $.active; + this.headers = $.headers; + this.insecure = $.insecure; + this.name = $.name; + this.payload = $.payload; + this.profile = $.profile; + this.url = $.url; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(XmattersNotificationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private XmattersNotificationArgs $; + + public Builder() { + $ = new XmattersNotificationArgs(); + } + + public Builder(XmattersNotificationArgs defaults) { + $ = new XmattersNotificationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param headers A list of the additional HTTP headers + * + * @return builder + * + */ + public Builder headers(@Nullable Output headers) { + $.headers = headers; + return this; + } + + /** + * @param headers A list of the additional HTTP headers + * + * @return builder + * + */ + public Builder headers(XmattersNotificationHeadersArgs headers) { + return headers(Output.of(headers)); + } + + /** + * @param insecure Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + * @return builder + * + */ + public Builder insecure(@Nullable Output insecure) { + $.insecure = insecure; + return this; + } + + /** + * @param insecure Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + * @return builder + * + */ + public Builder insecure(Boolean insecure) { + return insecure(Output.of(insecure)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param payload The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder payload(Output payload) { + $.payload = payload; + return this; + } + + /** + * @param payload The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder payload(String payload) { + return payload(Output.of(payload)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param url The URL of the WebHook endpoint + * + * @return builder + * + */ + public Builder url(Output url) { + $.url = url; + return this; + } + + /** + * @param url The URL of the WebHook endpoint + * + * @return builder + * + */ + public Builder url(String url) { + return url(Output.of(url)); + } + + public XmattersNotificationArgs build() { + $.active = Objects.requireNonNull($.active, "expected parameter 'active' to be non-null"); + $.payload = Objects.requireNonNull($.payload, "expected parameter 'payload' to be non-null"); + $.profile = Objects.requireNonNull($.profile, "expected parameter 'profile' to be non-null"); + $.url = Objects.requireNonNull($.url, "expected parameter 'url' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/AnsibleTowerNotificationState.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/AnsibleTowerNotificationState.java new file mode 100644 index 00000000..408b6439 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/AnsibleTowerNotificationState.java @@ -0,0 +1,343 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class AnsibleTowerNotificationState extends com.pulumi.resources.ResourceArgs { + + public static final AnsibleTowerNotificationState Empty = new AnsibleTowerNotificationState(); + + /** + * The notification is active (`true`) or inactive (`false`). Default is `false`. + * + */ + @Import(name="active") + private @Nullable Output active; + + /** + * @return The notification is active (`true`) or inactive (`false`). Default is `false`. + * + */ + public Optional> active() { + return Optional.ofNullable(this.active); + } + + /** + * The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Import(name="customMessage") + private @Nullable Output customMessage; + + /** + * @return The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Optional> customMessage() { + return Optional.ofNullable(this.customMessage); + } + + /** + * Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + * + */ + @Import(name="insecure") + private @Nullable Output insecure; + + /** + * @return Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + * + */ + public Optional> insecure() { + return Optional.ofNullable(this.insecure); + } + + /** + * The URL of the target Ansible Tower job template + * + */ + @Import(name="jobTemplateUrl") + private @Nullable Output jobTemplateUrl; + + /** + * @return The URL of the target Ansible Tower job template + * + */ + public Optional> jobTemplateUrl() { + return Optional.ofNullable(this.jobTemplateUrl); + } + + /** + * The display name within the Dynatrace WebUI. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The display name within the Dynatrace WebUI. + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The password for the Ansible Tower account + * + */ + @Import(name="password") + private @Nullable Output password; + + /** + * @return The password for the Ansible Tower account + * + */ + public Optional> password() { + return Optional.ofNullable(this.password); + } + + /** + * The ID of the associated alerting profile. + * + */ + @Import(name="profile") + private @Nullable Output profile; + + /** + * @return The ID of the associated alerting profile. + * + */ + public Optional> profile() { + return Optional.ofNullable(this.profile); + } + + /** + * The username of the Ansible Tower account + * + */ + @Import(name="username") + private @Nullable Output username; + + /** + * @return The username of the Ansible Tower account + * + */ + public Optional> username() { + return Optional.ofNullable(this.username); + } + + private AnsibleTowerNotificationState() {} + + private AnsibleTowerNotificationState(AnsibleTowerNotificationState $) { + this.active = $.active; + this.customMessage = $.customMessage; + this.insecure = $.insecure; + this.jobTemplateUrl = $.jobTemplateUrl; + this.name = $.name; + this.password = $.password; + this.profile = $.profile; + this.username = $.username; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(AnsibleTowerNotificationState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private AnsibleTowerNotificationState $; + + public Builder() { + $ = new AnsibleTowerNotificationState(); + } + + public Builder(AnsibleTowerNotificationState defaults) { + $ = new AnsibleTowerNotificationState(Objects.requireNonNull(defaults)); + } + + /** + * @param active The notification is active (`true`) or inactive (`false`). Default is `false`. + * + * @return builder + * + */ + public Builder active(@Nullable Output active) { + $.active = active; + return this; + } + + /** + * @param active The notification is active (`true`) or inactive (`false`). Default is `false`. + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param customMessage The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder customMessage(@Nullable Output customMessage) { + $.customMessage = customMessage; + return this; + } + + /** + * @param customMessage The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder customMessage(String customMessage) { + return customMessage(Output.of(customMessage)); + } + + /** + * @param insecure Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + * + * @return builder + * + */ + public Builder insecure(@Nullable Output insecure) { + $.insecure = insecure; + return this; + } + + /** + * @param insecure Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + * + * @return builder + * + */ + public Builder insecure(Boolean insecure) { + return insecure(Output.of(insecure)); + } + + /** + * @param jobTemplateUrl The URL of the target Ansible Tower job template + * + * @return builder + * + */ + public Builder jobTemplateUrl(@Nullable Output jobTemplateUrl) { + $.jobTemplateUrl = jobTemplateUrl; + return this; + } + + /** + * @param jobTemplateUrl The URL of the target Ansible Tower job template + * + * @return builder + * + */ + public Builder jobTemplateUrl(String jobTemplateUrl) { + return jobTemplateUrl(Output.of(jobTemplateUrl)); + } + + /** + * @param name The display name within the Dynatrace WebUI. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The display name within the Dynatrace WebUI. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param password The password for the Ansible Tower account + * + * @return builder + * + */ + public Builder password(@Nullable Output password) { + $.password = password; + return this; + } + + /** + * @param password The password for the Ansible Tower account + * + * @return builder + * + */ + public Builder password(String password) { + return password(Output.of(password)); + } + + /** + * @param profile The ID of the associated alerting profile. + * + * @return builder + * + */ + public Builder profile(@Nullable Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile. + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param username The username of the Ansible Tower account + * + * @return builder + * + */ + public Builder username(@Nullable Output username) { + $.username = username; + return this; + } + + /** + * @param username The username of the Ansible Tower account + * + * @return builder + * + */ + public Builder username(String username) { + return username(Output.of(username)); + } + + public AnsibleTowerNotificationState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/AutotagEntitySelectorBasedRuleArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/AutotagEntitySelectorBasedRuleArgs.java index 21a06ffa..68217692 100644 --- a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/AutotagEntitySelectorBasedRuleArgs.java +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/AutotagEntitySelectorBasedRuleArgs.java @@ -23,6 +23,13 @@ public Optional> enabled() { return Optional.ofNullable(this.enabled); } + @Import(name="normalization") + private @Nullable Output normalization; + + public Optional> normalization() { + return Optional.ofNullable(this.normalization); + } + @Import(name="selector") private @Nullable Output selector; @@ -48,6 +55,7 @@ private AutotagEntitySelectorBasedRuleArgs() {} private AutotagEntitySelectorBasedRuleArgs(AutotagEntitySelectorBasedRuleArgs $) { this.enabled = $.enabled; + this.normalization = $.normalization; this.selector = $.selector; this.unknowns = $.unknowns; this.valueFormat = $.valueFormat; @@ -80,6 +88,15 @@ public Builder enabled(Boolean enabled) { return enabled(Output.of(enabled)); } + public Builder normalization(@Nullable Output normalization) { + $.normalization = normalization; + return this; + } + + public Builder normalization(String normalization) { + return normalization(Output.of(normalization)); + } + public Builder selector(@Nullable Output selector) { $.selector = selector; return this; diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/DashboardDashboardMetadataArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/DashboardDashboardMetadataArgs.java index 7058cb49..cee79df2 100644 --- a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/DashboardDashboardMetadataArgs.java +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/DashboardDashboardMetadataArgs.java @@ -95,6 +95,21 @@ public Output owner() { return this.owner; } + /** + * the dashboard is a preset (`true`) or not (`false`). Default is `false`. + * + */ + @Import(name="preset") + private @Nullable Output preset; + + /** + * @return the dashboard is a preset (`true`) or not (`false`). Default is `false`. + * + */ + public Optional> preset() { + return Optional.ofNullable(this.preset); + } + /** * the dashboard is shared (`true`) or private (`false`) * @@ -178,6 +193,7 @@ private DashboardDashboardMetadataArgs(DashboardDashboardMetadataArgs $) { this.filter = $.filter; this.name = $.name; this.owner = $.owner; + this.preset = $.preset; this.shared = $.shared; this.sharingDetails = $.sharingDetails; this.tags = $.tags; @@ -308,6 +324,27 @@ public Builder owner(String owner) { return owner(Output.of(owner)); } + /** + * @param preset the dashboard is a preset (`true`) or not (`false`). Default is `false`. + * + * @return builder + * + */ + public Builder preset(@Nullable Output preset) { + $.preset = preset; + return this; + } + + /** + * @param preset the dashboard is a preset (`true`) or not (`false`). Default is `false`. + * + * @return builder + * + */ + public Builder preset(Boolean preset) { + return preset(Output.of(preset)); + } + /** * @param shared the dashboard is shared (`true`) or private (`false`) * diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/EmailNotificationState.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/EmailNotificationState.java new file mode 100644 index 00000000..2108d112 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/EmailNotificationState.java @@ -0,0 +1,411 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class EmailNotificationState extends com.pulumi.resources.ResourceArgs { + + public static final EmailNotificationState Empty = new EmailNotificationState(); + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active") + private @Nullable Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Optional> active() { + return Optional.ofNullable(this.active); + } + + /** + * The list of the email BCC-recipients + * + */ + @Import(name="bccs") + private @Nullable Output> bccs; + + /** + * @return The list of the email BCC-recipients + * + */ + public Optional>> bccs() { + return Optional.ofNullable(this.bccs); + } + + /** + * The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Import(name="body") + private @Nullable Output body; + + /** + * @return The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Optional> body() { + return Optional.ofNullable(this.body); + } + + /** + * The list of the email CC-recipients + * + */ + @Import(name="ccs") + private @Nullable Output> ccs; + + /** + * @return The list of the email CC-recipients + * + */ + public Optional>> ccs() { + return Optional.ofNullable(this.ccs); + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * Send email if problem is closed + * + */ + @Import(name="notifyClosedProblems") + private @Nullable Output notifyClosedProblems; + + /** + * @return Send email if problem is closed + * + */ + public Optional> notifyClosedProblems() { + return Optional.ofNullable(this.notifyClosedProblems); + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile") + private @Nullable Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Optional> profile() { + return Optional.ofNullable(this.profile); + } + + /** + * The subject of the email notifications + * + */ + @Import(name="subject") + private @Nullable Output subject; + + /** + * @return The subject of the email notifications + * + */ + public Optional> subject() { + return Optional.ofNullable(this.subject); + } + + /** + * The list of the email recipients + * + */ + @Import(name="tos") + private @Nullable Output> tos; + + /** + * @return The list of the email recipients + * + */ + public Optional>> tos() { + return Optional.ofNullable(this.tos); + } + + private EmailNotificationState() {} + + private EmailNotificationState(EmailNotificationState $) { + this.active = $.active; + this.bccs = $.bccs; + this.body = $.body; + this.ccs = $.ccs; + this.name = $.name; + this.notifyClosedProblems = $.notifyClosedProblems; + this.profile = $.profile; + this.subject = $.subject; + this.tos = $.tos; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(EmailNotificationState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private EmailNotificationState $; + + public Builder() { + $ = new EmailNotificationState(); + } + + public Builder(EmailNotificationState defaults) { + $ = new EmailNotificationState(Objects.requireNonNull(defaults)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(@Nullable Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param bccs The list of the email BCC-recipients + * + * @return builder + * + */ + public Builder bccs(@Nullable Output> bccs) { + $.bccs = bccs; + return this; + } + + /** + * @param bccs The list of the email BCC-recipients + * + * @return builder + * + */ + public Builder bccs(List bccs) { + return bccs(Output.of(bccs)); + } + + /** + * @param bccs The list of the email BCC-recipients + * + * @return builder + * + */ + public Builder bccs(String... bccs) { + return bccs(List.of(bccs)); + } + + /** + * @param body The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder body(@Nullable Output body) { + $.body = body; + return this; + } + + /** + * @param body The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder body(String body) { + return body(Output.of(body)); + } + + /** + * @param ccs The list of the email CC-recipients + * + * @return builder + * + */ + public Builder ccs(@Nullable Output> ccs) { + $.ccs = ccs; + return this; + } + + /** + * @param ccs The list of the email CC-recipients + * + * @return builder + * + */ + public Builder ccs(List ccs) { + return ccs(Output.of(ccs)); + } + + /** + * @param ccs The list of the email CC-recipients + * + * @return builder + * + */ + public Builder ccs(String... ccs) { + return ccs(List.of(ccs)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param notifyClosedProblems Send email if problem is closed + * + * @return builder + * + */ + public Builder notifyClosedProblems(@Nullable Output notifyClosedProblems) { + $.notifyClosedProblems = notifyClosedProblems; + return this; + } + + /** + * @param notifyClosedProblems Send email if problem is closed + * + * @return builder + * + */ + public Builder notifyClosedProblems(Boolean notifyClosedProblems) { + return notifyClosedProblems(Output.of(notifyClosedProblems)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(@Nullable Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param subject The subject of the email notifications + * + * @return builder + * + */ + public Builder subject(@Nullable Output subject) { + $.subject = subject; + return this; + } + + /** + * @param subject The subject of the email notifications + * + * @return builder + * + */ + public Builder subject(String subject) { + return subject(Output.of(subject)); + } + + /** + * @param tos The list of the email recipients + * + * @return builder + * + */ + public Builder tos(@Nullable Output> tos) { + $.tos = tos; + return this; + } + + /** + * @param tos The list of the email recipients + * + * @return builder + * + */ + public Builder tos(List tos) { + return tos(Output.of(tos)); + } + + /** + * @param tos The list of the email recipients + * + * @return builder + * + */ + public Builder tos(String... tos) { + return tos(List.of(tos)); + } + + public EmailNotificationState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/FrequentIssuesState.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/FrequentIssuesState.java new file mode 100644 index 00000000..ce80853c --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/FrequentIssuesState.java @@ -0,0 +1,157 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class FrequentIssuesState extends com.pulumi.resources.ResourceArgs { + + public static final FrequentIssuesState Empty = new FrequentIssuesState(); + + /** + * Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + * + */ + @Import(name="detectApps") + private @Nullable Output detectApps; + + /** + * @return Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + * + */ + public Optional> detectApps() { + return Optional.ofNullable(this.detectApps); + } + + /** + * Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + * + */ + @Import(name="detectInfra") + private @Nullable Output detectInfra; + + /** + * @return Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + * + */ + public Optional> detectInfra() { + return Optional.ofNullable(this.detectInfra); + } + + /** + * Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + * + */ + @Import(name="detectTxn") + private @Nullable Output detectTxn; + + /** + * @return Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + * + */ + public Optional> detectTxn() { + return Optional.ofNullable(this.detectTxn); + } + + private FrequentIssuesState() {} + + private FrequentIssuesState(FrequentIssuesState $) { + this.detectApps = $.detectApps; + this.detectInfra = $.detectInfra; + this.detectTxn = $.detectTxn; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(FrequentIssuesState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private FrequentIssuesState $; + + public Builder() { + $ = new FrequentIssuesState(); + } + + public Builder(FrequentIssuesState defaults) { + $ = new FrequentIssuesState(Objects.requireNonNull(defaults)); + } + + /** + * @param detectApps Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder detectApps(@Nullable Output detectApps) { + $.detectApps = detectApps; + return this; + } + + /** + * @param detectApps Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder detectApps(Boolean detectApps) { + return detectApps(Output.of(detectApps)); + } + + /** + * @param detectInfra Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder detectInfra(@Nullable Output detectInfra) { + $.detectInfra = detectInfra; + return this; + } + + /** + * @param detectInfra Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder detectInfra(Boolean detectInfra) { + return detectInfra(Output.of(detectInfra)); + } + + /** + * @param detectTxn Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder detectTxn(@Nullable Output detectTxn) { + $.detectTxn = detectTxn; + return this; + } + + /** + * @param detectTxn Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder detectTxn(Boolean detectTxn) { + return detectTxn(Output.of(detectTxn)); + } + + public FrequentIssuesState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/GetAlertingProfileArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/GetAlertingProfileArgs.java new file mode 100644 index 00000000..8027ca80 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/GetAlertingProfileArgs.java @@ -0,0 +1,62 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; + + +public final class GetAlertingProfileArgs extends com.pulumi.resources.InvokeArgs { + + public static final GetAlertingProfileArgs Empty = new GetAlertingProfileArgs(); + + @Import(name="name", required=true) + private Output name; + + public Output name() { + return this.name; + } + + private GetAlertingProfileArgs() {} + + private GetAlertingProfileArgs(GetAlertingProfileArgs $) { + this.name = $.name; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GetAlertingProfileArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GetAlertingProfileArgs $; + + public Builder() { + $ = new GetAlertingProfileArgs(); + } + + public Builder(GetAlertingProfileArgs defaults) { + $ = new GetAlertingProfileArgs(Objects.requireNonNull(defaults)); + } + + public Builder name(Output name) { + $.name = name; + return this; + } + + public Builder name(String name) { + return name(Output.of(name)); + } + + public GetAlertingProfileArgs build() { + $.name = Objects.requireNonNull($.name, "expected parameter 'name' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/GetAlertingProfilePlainArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/GetAlertingProfilePlainArgs.java new file mode 100644 index 00000000..d7974b0f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/GetAlertingProfilePlainArgs.java @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; + + +public final class GetAlertingProfilePlainArgs extends com.pulumi.resources.InvokeArgs { + + public static final GetAlertingProfilePlainArgs Empty = new GetAlertingProfilePlainArgs(); + + @Import(name="name", required=true) + private String name; + + public String name() { + return this.name; + } + + private GetAlertingProfilePlainArgs() {} + + private GetAlertingProfilePlainArgs(GetAlertingProfilePlainArgs $) { + this.name = $.name; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GetAlertingProfilePlainArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GetAlertingProfilePlainArgs $; + + public Builder() { + $ = new GetAlertingProfilePlainArgs(); + } + + public Builder(GetAlertingProfilePlainArgs defaults) { + $ = new GetAlertingProfilePlainArgs(Objects.requireNonNull(defaults)); + } + + public Builder name(String name) { + $.name = name; + return this; + } + + public GetAlertingProfilePlainArgs build() { + $.name = Objects.requireNonNull($.name, "expected parameter 'name' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/GetCredentialsArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/GetCredentialsArgs.java index f3e1d4ac..7e6a1c46 100644 --- a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/GetCredentialsArgs.java +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/GetCredentialsArgs.java @@ -6,7 +6,6 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; import java.lang.String; -import java.util.Map; import java.util.Objects; import java.util.Optional; import javax.annotation.Nullable; @@ -16,17 +15,57 @@ public final class GetCredentialsArgs extends com.pulumi.resources.InvokeArgs { public static final GetCredentialsArgs Empty = new GetCredentialsArgs(); - @Import(name="credentials") - private @Nullable Output> credentials; + /** + * The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + * + */ + @Import(name="scope") + private @Nullable Output scope; + + /** + * @return The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + * + */ + public Optional> scope() { + return Optional.ofNullable(this.scope); + } - public Optional>> credentials() { - return Optional.ofNullable(this.credentials); + /** + * The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + * + */ + @Import(name="type") + private @Nullable Output type; + + /** + * @return The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + * + */ + public Optional> type() { + return Optional.ofNullable(this.type); } private GetCredentialsArgs() {} private GetCredentialsArgs(GetCredentialsArgs $) { - this.credentials = $.credentials; + this.name = $.name; + this.scope = $.scope; + this.type = $.type; } public static Builder builder() { @@ -47,13 +86,67 @@ public Builder(GetCredentialsArgs defaults) { $ = new GetCredentialsArgs(Objects.requireNonNull(defaults)); } - public Builder credentials(@Nullable Output> credentials) { - $.credentials = credentials; + /** + * @param name The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param scope The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + * + * @return builder + * + */ + public Builder scope(@Nullable Output scope) { + $.scope = scope; + return this; + } + + /** + * @param scope The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + * + * @return builder + * + */ + public Builder scope(String scope) { + return scope(Output.of(scope)); + } + + /** + * @param type The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + * + * @return builder + * + */ + public Builder type(@Nullable Output type) { + $.type = type; return this; } - public Builder credentials(Map credentials) { - return credentials(Output.of(credentials)); + /** + * @param type The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + * + * @return builder + * + */ + public Builder type(String type) { + return type(Output.of(type)); } public GetCredentialsArgs build() { diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/GetCredentialsPlainArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/GetCredentialsPlainArgs.java index 7acfaad0..e5b59d5e 100644 --- a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/GetCredentialsPlainArgs.java +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/GetCredentialsPlainArgs.java @@ -5,7 +5,6 @@ import com.pulumi.core.annotations.Import; import java.lang.String; -import java.util.Map; import java.util.Objects; import java.util.Optional; import javax.annotation.Nullable; @@ -15,17 +14,57 @@ public final class GetCredentialsPlainArgs extends com.pulumi.resources.InvokeAr public static final GetCredentialsPlainArgs Empty = new GetCredentialsPlainArgs(); - @Import(name="credentials") - private @Nullable Map credentials; + /** + * The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + * + */ + @Import(name="name") + private @Nullable String name; + + /** + * @return The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + * + */ + public Optional name() { + return Optional.ofNullable(this.name); + } + + /** + * The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + * + */ + @Import(name="scope") + private @Nullable String scope; + + /** + * @return The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + * + */ + public Optional scope() { + return Optional.ofNullable(this.scope); + } - public Optional> credentials() { - return Optional.ofNullable(this.credentials); + /** + * The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + * + */ + @Import(name="type") + private @Nullable String type; + + /** + * @return The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + * + */ + public Optional type() { + return Optional.ofNullable(this.type); } private GetCredentialsPlainArgs() {} private GetCredentialsPlainArgs(GetCredentialsPlainArgs $) { - this.credentials = $.credentials; + this.name = $.name; + this.scope = $.scope; + this.type = $.type; } public static Builder builder() { @@ -46,8 +85,36 @@ public Builder(GetCredentialsPlainArgs defaults) { $ = new GetCredentialsPlainArgs(Objects.requireNonNull(defaults)); } - public Builder credentials(@Nullable Map credentials) { - $.credentials = credentials; + /** + * @param name The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + * + * @return builder + * + */ + public Builder name(@Nullable String name) { + $.name = name; + return this; + } + + /** + * @param scope The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + * + * @return builder + * + */ + public Builder scope(@Nullable String scope) { + $.scope = scope; + return this; + } + + /** + * @param type The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + * + * @return builder + * + */ + public Builder type(@Nullable String type) { + $.type = type; return this; } diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/JiraNotificationState.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/JiraNotificationState.java new file mode 100644 index 00000000..944112f6 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/JiraNotificationState.java @@ -0,0 +1,417 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class JiraNotificationState extends com.pulumi.resources.ResourceArgs { + + public static final JiraNotificationState Empty = new JiraNotificationState(); + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active") + private @Nullable Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Optional> active() { + return Optional.ofNullable(this.active); + } + + /** + * The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + * + */ + @Import(name="apiToken") + private @Nullable Output apiToken; + + /** + * @return The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + * + */ + public Optional> apiToken() { + return Optional.ofNullable(this.apiToken); + } + + /** + * The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * The type of the Jira issue to be created by this notification + * + */ + @Import(name="issueType") + private @Nullable Output issueType; + + /** + * @return The type of the Jira issue to be created by this notification + * + */ + public Optional> issueType() { + return Optional.ofNullable(this.issueType); + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile") + private @Nullable Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Optional> profile() { + return Optional.ofNullable(this.profile); + } + + /** + * The project key of the Jira issue to be created by this notification + * + */ + @Import(name="projectKey") + private @Nullable Output projectKey; + + /** + * @return The project key of the Jira issue to be created by this notification + * + */ + public Optional> projectKey() { + return Optional.ofNullable(this.projectKey); + } + + /** + * The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Import(name="summary") + private @Nullable Output summary; + + /** + * @return The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Optional> summary() { + return Optional.ofNullable(this.summary); + } + + /** + * The URL of the Jira API endpoint + * + */ + @Import(name="url") + private @Nullable Output url; + + /** + * @return The URL of the Jira API endpoint + * + */ + public Optional> url() { + return Optional.ofNullable(this.url); + } + + /** + * The username of the Jira profile + * + */ + @Import(name="username") + private @Nullable Output username; + + /** + * @return The username of the Jira profile + * + */ + public Optional> username() { + return Optional.ofNullable(this.username); + } + + private JiraNotificationState() {} + + private JiraNotificationState(JiraNotificationState $) { + this.active = $.active; + this.apiToken = $.apiToken; + this.description = $.description; + this.issueType = $.issueType; + this.name = $.name; + this.profile = $.profile; + this.projectKey = $.projectKey; + this.summary = $.summary; + this.url = $.url; + this.username = $.username; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(JiraNotificationState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private JiraNotificationState $; + + public Builder() { + $ = new JiraNotificationState(); + } + + public Builder(JiraNotificationState defaults) { + $ = new JiraNotificationState(Objects.requireNonNull(defaults)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(@Nullable Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param apiToken The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + * + * @return builder + * + */ + public Builder apiToken(@Nullable Output apiToken) { + $.apiToken = apiToken; + return this; + } + + /** + * @param apiToken The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + * + * @return builder + * + */ + public Builder apiToken(String apiToken) { + return apiToken(Output.of(apiToken)); + } + + /** + * @param description The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param issueType The type of the Jira issue to be created by this notification + * + * @return builder + * + */ + public Builder issueType(@Nullable Output issueType) { + $.issueType = issueType; + return this; + } + + /** + * @param issueType The type of the Jira issue to be created by this notification + * + * @return builder + * + */ + public Builder issueType(String issueType) { + return issueType(Output.of(issueType)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(@Nullable Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param projectKey The project key of the Jira issue to be created by this notification + * + * @return builder + * + */ + public Builder projectKey(@Nullable Output projectKey) { + $.projectKey = projectKey; + return this; + } + + /** + * @param projectKey The project key of the Jira issue to be created by this notification + * + * @return builder + * + */ + public Builder projectKey(String projectKey) { + return projectKey(Output.of(projectKey)); + } + + /** + * @param summary The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder summary(@Nullable Output summary) { + $.summary = summary; + return this; + } + + /** + * @param summary The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder summary(String summary) { + return summary(Output.of(summary)); + } + + /** + * @param url The URL of the Jira API endpoint + * + * @return builder + * + */ + public Builder url(@Nullable Output url) { + $.url = url; + return this; + } + + /** + * @param url The URL of the Jira API endpoint + * + * @return builder + * + */ + public Builder url(String url) { + return url(Output.of(url)); + } + + /** + * @param username The username of the Jira profile + * + * @return builder + * + */ + public Builder username(@Nullable Output username) { + $.username = username; + return this; + } + + /** + * @param username The username of the Jira profile + * + * @return builder + * + */ + public Builder username(String username) { + return username(Output.of(username)); + } + + public JiraNotificationState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceFilterArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceFilterArgs.java new file mode 100644 index 00000000..60cdd519 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceFilterArgs.java @@ -0,0 +1,94 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.dynatrace.inputs.MaintenanceFilterFilterArgs; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class MaintenanceFilterArgs extends com.pulumi.resources.ResourceArgs { + + public static final MaintenanceFilterArgs Empty = new MaintenanceFilterArgs(); + + /** + * A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies + * + */ + @Import(name="filters") + private @Nullable Output> filters; + + /** + * @return A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies + * + */ + public Optional>> filters() { + return Optional.ofNullable(this.filters); + } + + private MaintenanceFilterArgs() {} + + private MaintenanceFilterArgs(MaintenanceFilterArgs $) { + this.filters = $.filters; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(MaintenanceFilterArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private MaintenanceFilterArgs $; + + public Builder() { + $ = new MaintenanceFilterArgs(); + } + + public Builder(MaintenanceFilterArgs defaults) { + $ = new MaintenanceFilterArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param filters A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies + * + * @return builder + * + */ + public Builder filters(@Nullable Output> filters) { + $.filters = filters; + return this; + } + + /** + * @param filters A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies + * + * @return builder + * + */ + public Builder filters(List filters) { + return filters(Output.of(filters)); + } + + /** + * @param filters A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies + * + * @return builder + * + */ + public Builder filters(MaintenanceFilterFilterArgs... filters) { + return filters(List.of(filters)); + } + + public MaintenanceFilterArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceFilterFilterArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceFilterFilterArgs.java new file mode 100644 index 00000000..ba1bf0a0 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceFilterFilterArgs.java @@ -0,0 +1,123 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class MaintenanceFilterFilterArgs extends com.pulumi.resources.ResourceArgs { + + public static final MaintenanceFilterFilterArgs Empty = new MaintenanceFilterFilterArgs(); + + @Import(name="entityId") + private @Nullable Output entityId; + + public Optional> entityId() { + return Optional.ofNullable(this.entityId); + } + + @Import(name="entityTags") + private @Nullable Output> entityTags; + + public Optional>> entityTags() { + return Optional.ofNullable(this.entityTags); + } + + @Import(name="entityType") + private @Nullable Output entityType; + + public Optional> entityType() { + return Optional.ofNullable(this.entityType); + } + + @Import(name="managementZones") + private @Nullable Output> managementZones; + + public Optional>> managementZones() { + return Optional.ofNullable(this.managementZones); + } + + private MaintenanceFilterFilterArgs() {} + + private MaintenanceFilterFilterArgs(MaintenanceFilterFilterArgs $) { + this.entityId = $.entityId; + this.entityTags = $.entityTags; + this.entityType = $.entityType; + this.managementZones = $.managementZones; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(MaintenanceFilterFilterArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private MaintenanceFilterFilterArgs $; + + public Builder() { + $ = new MaintenanceFilterFilterArgs(); + } + + public Builder(MaintenanceFilterFilterArgs defaults) { + $ = new MaintenanceFilterFilterArgs(Objects.requireNonNull(defaults)); + } + + public Builder entityId(@Nullable Output entityId) { + $.entityId = entityId; + return this; + } + + public Builder entityId(String entityId) { + return entityId(Output.of(entityId)); + } + + public Builder entityTags(@Nullable Output> entityTags) { + $.entityTags = entityTags; + return this; + } + + public Builder entityTags(List entityTags) { + return entityTags(Output.of(entityTags)); + } + + public Builder entityTags(String... entityTags) { + return entityTags(List.of(entityTags)); + } + + public Builder entityType(@Nullable Output entityType) { + $.entityType = entityType; + return this; + } + + public Builder entityType(String entityType) { + return entityType(Output.of(entityType)); + } + + public Builder managementZones(@Nullable Output> managementZones) { + $.managementZones = managementZones; + return this; + } + + public Builder managementZones(List managementZones) { + return managementZones(Output.of(managementZones)); + } + + public Builder managementZones(String... managementZones) { + return managementZones(List.of(managementZones)); + } + + public MaintenanceFilterFilterArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceGeneralPropertiesArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceGeneralPropertiesArgs.java new file mode 100644 index 00000000..ca45e0e9 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceGeneralPropertiesArgs.java @@ -0,0 +1,235 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class MaintenanceGeneralPropertiesArgs extends com.pulumi.resources.ResourceArgs { + + public static final MaintenanceGeneralPropertiesArgs Empty = new MaintenanceGeneralPropertiesArgs(); + + /** + * A short description of the maintenance purpose + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return A short description of the maintenance purpose + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * Suppress execution of synthetic monitors during the maintenance + * + */ + @Import(name="disableSynthetic") + private @Nullable Output disableSynthetic; + + /** + * @return Suppress execution of synthetic monitors during the maintenance + * + */ + public Optional> disableSynthetic() { + return Optional.ofNullable(this.disableSynthetic); + } + + /** + * The name of the maintenance window, displayed in the UI + * + */ + @Import(name="name", required=true) + private Output name; + + /** + * @return The name of the maintenance window, displayed in the UI + * + */ + public Output name() { + return this.name; + } + + /** + * The type of suppression of alerting and problem detection during the maintenance + * + */ + @Import(name="suppression", required=true) + private Output suppression; + + /** + * @return The type of suppression of alerting and problem detection during the maintenance + * + */ + public Output suppression() { + return this.suppression; + } + + /** + * The type of the maintenance: planned or unplanned + * + */ + @Import(name="type", required=true) + private Output type; + + /** + * @return The type of the maintenance: planned or unplanned + * + */ + public Output type() { + return this.type; + } + + private MaintenanceGeneralPropertiesArgs() {} + + private MaintenanceGeneralPropertiesArgs(MaintenanceGeneralPropertiesArgs $) { + this.description = $.description; + this.disableSynthetic = $.disableSynthetic; + this.name = $.name; + this.suppression = $.suppression; + this.type = $.type; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(MaintenanceGeneralPropertiesArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private MaintenanceGeneralPropertiesArgs $; + + public Builder() { + $ = new MaintenanceGeneralPropertiesArgs(); + } + + public Builder(MaintenanceGeneralPropertiesArgs defaults) { + $ = new MaintenanceGeneralPropertiesArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param description A short description of the maintenance purpose + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description A short description of the maintenance purpose + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param disableSynthetic Suppress execution of synthetic monitors during the maintenance + * + * @return builder + * + */ + public Builder disableSynthetic(@Nullable Output disableSynthetic) { + $.disableSynthetic = disableSynthetic; + return this; + } + + /** + * @param disableSynthetic Suppress execution of synthetic monitors during the maintenance + * + * @return builder + * + */ + public Builder disableSynthetic(Boolean disableSynthetic) { + return disableSynthetic(Output.of(disableSynthetic)); + } + + /** + * @param name The name of the maintenance window, displayed in the UI + * + * @return builder + * + */ + public Builder name(Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the maintenance window, displayed in the UI + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param suppression The type of suppression of alerting and problem detection during the maintenance + * + * @return builder + * + */ + public Builder suppression(Output suppression) { + $.suppression = suppression; + return this; + } + + /** + * @param suppression The type of suppression of alerting and problem detection during the maintenance + * + * @return builder + * + */ + public Builder suppression(String suppression) { + return suppression(Output.of(suppression)); + } + + /** + * @param type The type of the maintenance: planned or unplanned + * + * @return builder + * + */ + public Builder type(Output type) { + $.type = type; + return this; + } + + /** + * @param type The type of the maintenance: planned or unplanned + * + * @return builder + * + */ + public Builder type(String type) { + return type(Output.of(type)); + } + + public MaintenanceGeneralPropertiesArgs build() { + $.name = Objects.requireNonNull($.name, "expected parameter 'name' to be non-null"); + $.suppression = Objects.requireNonNull($.suppression, "expected parameter 'suppression' to be non-null"); + $.type = Objects.requireNonNull($.type, "expected parameter 'type' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleArgs.java new file mode 100644 index 00000000..b9f5296e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleArgs.java @@ -0,0 +1,236 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.dynatrace.inputs.MaintenanceScheduleDailyRecurrenceArgs; +import com.pulumi.dynatrace.inputs.MaintenanceScheduleMonthlyRecurrenceArgs; +import com.pulumi.dynatrace.inputs.MaintenanceScheduleOnceRecurrenceArgs; +import com.pulumi.dynatrace.inputs.MaintenanceScheduleWeeklyRecurrenceArgs; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class MaintenanceScheduleArgs extends com.pulumi.resources.ResourceArgs { + + public static final MaintenanceScheduleArgs Empty = new MaintenanceScheduleArgs(); + + /** + * The configuration for maintenance windows occuring daily + * + */ + @Import(name="dailyRecurrence") + private @Nullable Output dailyRecurrence; + + /** + * @return The configuration for maintenance windows occuring daily + * + */ + public Optional> dailyRecurrence() { + return Optional.ofNullable(this.dailyRecurrence); + } + + /** + * The configuration for maintenance windows occuring monthly + * + */ + @Import(name="monthlyRecurrence") + private @Nullable Output monthlyRecurrence; + + /** + * @return The configuration for maintenance windows occuring monthly + * + */ + public Optional> monthlyRecurrence() { + return Optional.ofNullable(this.monthlyRecurrence); + } + + /** + * The configuration for maintenance windows occuring once + * + */ + @Import(name="onceRecurrence") + private @Nullable Output onceRecurrence; + + /** + * @return The configuration for maintenance windows occuring once + * + */ + public Optional> onceRecurrence() { + return Optional.ofNullable(this.onceRecurrence); + } + + /** + * The time window of the maintenance window + * + */ + @Import(name="type", required=true) + private Output type; + + /** + * @return The time window of the maintenance window + * + */ + public Output type() { + return this.type; + } + + /** + * The configuration for maintenance windows occuring weekly + * + */ + @Import(name="weeklyRecurrence") + private @Nullable Output weeklyRecurrence; + + /** + * @return The configuration for maintenance windows occuring weekly + * + */ + public Optional> weeklyRecurrence() { + return Optional.ofNullable(this.weeklyRecurrence); + } + + private MaintenanceScheduleArgs() {} + + private MaintenanceScheduleArgs(MaintenanceScheduleArgs $) { + this.dailyRecurrence = $.dailyRecurrence; + this.monthlyRecurrence = $.monthlyRecurrence; + this.onceRecurrence = $.onceRecurrence; + this.type = $.type; + this.weeklyRecurrence = $.weeklyRecurrence; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(MaintenanceScheduleArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private MaintenanceScheduleArgs $; + + public Builder() { + $ = new MaintenanceScheduleArgs(); + } + + public Builder(MaintenanceScheduleArgs defaults) { + $ = new MaintenanceScheduleArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param dailyRecurrence The configuration for maintenance windows occuring daily + * + * @return builder + * + */ + public Builder dailyRecurrence(@Nullable Output dailyRecurrence) { + $.dailyRecurrence = dailyRecurrence; + return this; + } + + /** + * @param dailyRecurrence The configuration for maintenance windows occuring daily + * + * @return builder + * + */ + public Builder dailyRecurrence(MaintenanceScheduleDailyRecurrenceArgs dailyRecurrence) { + return dailyRecurrence(Output.of(dailyRecurrence)); + } + + /** + * @param monthlyRecurrence The configuration for maintenance windows occuring monthly + * + * @return builder + * + */ + public Builder monthlyRecurrence(@Nullable Output monthlyRecurrence) { + $.monthlyRecurrence = monthlyRecurrence; + return this; + } + + /** + * @param monthlyRecurrence The configuration for maintenance windows occuring monthly + * + * @return builder + * + */ + public Builder monthlyRecurrence(MaintenanceScheduleMonthlyRecurrenceArgs monthlyRecurrence) { + return monthlyRecurrence(Output.of(monthlyRecurrence)); + } + + /** + * @param onceRecurrence The configuration for maintenance windows occuring once + * + * @return builder + * + */ + public Builder onceRecurrence(@Nullable Output onceRecurrence) { + $.onceRecurrence = onceRecurrence; + return this; + } + + /** + * @param onceRecurrence The configuration for maintenance windows occuring once + * + * @return builder + * + */ + public Builder onceRecurrence(MaintenanceScheduleOnceRecurrenceArgs onceRecurrence) { + return onceRecurrence(Output.of(onceRecurrence)); + } + + /** + * @param type The time window of the maintenance window + * + * @return builder + * + */ + public Builder type(Output type) { + $.type = type; + return this; + } + + /** + * @param type The time window of the maintenance window + * + * @return builder + * + */ + public Builder type(String type) { + return type(Output.of(type)); + } + + /** + * @param weeklyRecurrence The configuration for maintenance windows occuring weekly + * + * @return builder + * + */ + public Builder weeklyRecurrence(@Nullable Output weeklyRecurrence) { + $.weeklyRecurrence = weeklyRecurrence; + return this; + } + + /** + * @param weeklyRecurrence The configuration for maintenance windows occuring weekly + * + * @return builder + * + */ + public Builder weeklyRecurrence(MaintenanceScheduleWeeklyRecurrenceArgs weeklyRecurrence) { + return weeklyRecurrence(Output.of(weeklyRecurrence)); + } + + public MaintenanceScheduleArgs build() { + $.type = Objects.requireNonNull($.type, "expected parameter 'type' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceArgs.java new file mode 100644 index 00000000..365fb740 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceArgs.java @@ -0,0 +1,81 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.dynatrace.inputs.MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs; +import com.pulumi.dynatrace.inputs.MaintenanceScheduleDailyRecurrenceTimeWindowArgs; +import java.util.Objects; + + +public final class MaintenanceScheduleDailyRecurrenceArgs extends com.pulumi.resources.ResourceArgs { + + public static final MaintenanceScheduleDailyRecurrenceArgs Empty = new MaintenanceScheduleDailyRecurrenceArgs(); + + @Import(name="recurrenceRange", required=true) + private Output recurrenceRange; + + public Output recurrenceRange() { + return this.recurrenceRange; + } + + @Import(name="timeWindow", required=true) + private Output timeWindow; + + public Output timeWindow() { + return this.timeWindow; + } + + private MaintenanceScheduleDailyRecurrenceArgs() {} + + private MaintenanceScheduleDailyRecurrenceArgs(MaintenanceScheduleDailyRecurrenceArgs $) { + this.recurrenceRange = $.recurrenceRange; + this.timeWindow = $.timeWindow; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(MaintenanceScheduleDailyRecurrenceArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private MaintenanceScheduleDailyRecurrenceArgs $; + + public Builder() { + $ = new MaintenanceScheduleDailyRecurrenceArgs(); + } + + public Builder(MaintenanceScheduleDailyRecurrenceArgs defaults) { + $ = new MaintenanceScheduleDailyRecurrenceArgs(Objects.requireNonNull(defaults)); + } + + public Builder recurrenceRange(Output recurrenceRange) { + $.recurrenceRange = recurrenceRange; + return this; + } + + public Builder recurrenceRange(MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs recurrenceRange) { + return recurrenceRange(Output.of(recurrenceRange)); + } + + public Builder timeWindow(Output timeWindow) { + $.timeWindow = timeWindow; + return this; + } + + public Builder timeWindow(MaintenanceScheduleDailyRecurrenceTimeWindowArgs timeWindow) { + return timeWindow(Output.of(timeWindow)); + } + + public MaintenanceScheduleDailyRecurrenceArgs build() { + $.recurrenceRange = Objects.requireNonNull($.recurrenceRange, "expected parameter 'recurrenceRange' to be non-null"); + $.timeWindow = Objects.requireNonNull($.timeWindow, "expected parameter 'timeWindow' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs.java new file mode 100644 index 00000000..a4c5e3b8 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs.java @@ -0,0 +1,80 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; + + +public final class MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs extends com.pulumi.resources.ResourceArgs { + + public static final MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs Empty = new MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs(); + + @Import(name="endDate", required=true) + private Output endDate; + + public Output endDate() { + return this.endDate; + } + + @Import(name="startDate", required=true) + private Output startDate; + + public Output startDate() { + return this.startDate; + } + + private MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs() {} + + private MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs(MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs $) { + this.endDate = $.endDate; + this.startDate = $.startDate; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs $; + + public Builder() { + $ = new MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs(); + } + + public Builder(MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs defaults) { + $ = new MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs(Objects.requireNonNull(defaults)); + } + + public Builder endDate(Output endDate) { + $.endDate = endDate; + return this; + } + + public Builder endDate(String endDate) { + return endDate(Output.of(endDate)); + } + + public Builder startDate(Output startDate) { + $.startDate = startDate; + return this; + } + + public Builder startDate(String startDate) { + return startDate(Output.of(startDate)); + } + + public MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs build() { + $.endDate = Objects.requireNonNull($.endDate, "expected parameter 'endDate' to be non-null"); + $.startDate = Objects.requireNonNull($.startDate, "expected parameter 'startDate' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceTimeWindowArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceTimeWindowArgs.java new file mode 100644 index 00000000..b20bf10c --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleDailyRecurrenceTimeWindowArgs.java @@ -0,0 +1,98 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; + + +public final class MaintenanceScheduleDailyRecurrenceTimeWindowArgs extends com.pulumi.resources.ResourceArgs { + + public static final MaintenanceScheduleDailyRecurrenceTimeWindowArgs Empty = new MaintenanceScheduleDailyRecurrenceTimeWindowArgs(); + + @Import(name="endTime", required=true) + private Output endTime; + + public Output endTime() { + return this.endTime; + } + + @Import(name="startTime", required=true) + private Output startTime; + + public Output startTime() { + return this.startTime; + } + + @Import(name="timeZone", required=true) + private Output timeZone; + + public Output timeZone() { + return this.timeZone; + } + + private MaintenanceScheduleDailyRecurrenceTimeWindowArgs() {} + + private MaintenanceScheduleDailyRecurrenceTimeWindowArgs(MaintenanceScheduleDailyRecurrenceTimeWindowArgs $) { + this.endTime = $.endTime; + this.startTime = $.startTime; + this.timeZone = $.timeZone; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(MaintenanceScheduleDailyRecurrenceTimeWindowArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private MaintenanceScheduleDailyRecurrenceTimeWindowArgs $; + + public Builder() { + $ = new MaintenanceScheduleDailyRecurrenceTimeWindowArgs(); + } + + public Builder(MaintenanceScheduleDailyRecurrenceTimeWindowArgs defaults) { + $ = new MaintenanceScheduleDailyRecurrenceTimeWindowArgs(Objects.requireNonNull(defaults)); + } + + public Builder endTime(Output endTime) { + $.endTime = endTime; + return this; + } + + public Builder endTime(String endTime) { + return endTime(Output.of(endTime)); + } + + public Builder startTime(Output startTime) { + $.startTime = startTime; + return this; + } + + public Builder startTime(String startTime) { + return startTime(Output.of(startTime)); + } + + public Builder timeZone(Output timeZone) { + $.timeZone = timeZone; + return this; + } + + public Builder timeZone(String timeZone) { + return timeZone(Output.of(timeZone)); + } + + public MaintenanceScheduleDailyRecurrenceTimeWindowArgs build() { + $.endTime = Objects.requireNonNull($.endTime, "expected parameter 'endTime' to be non-null"); + $.startTime = Objects.requireNonNull($.startTime, "expected parameter 'startTime' to be non-null"); + $.timeZone = Objects.requireNonNull($.timeZone, "expected parameter 'timeZone' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceArgs.java new file mode 100644 index 00000000..f1e8b5c5 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceArgs.java @@ -0,0 +1,100 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.dynatrace.inputs.MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs; +import com.pulumi.dynatrace.inputs.MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs; +import java.lang.Integer; +import java.util.Objects; + + +public final class MaintenanceScheduleMonthlyRecurrenceArgs extends com.pulumi.resources.ResourceArgs { + + public static final MaintenanceScheduleMonthlyRecurrenceArgs Empty = new MaintenanceScheduleMonthlyRecurrenceArgs(); + + @Import(name="dayOfMonth", required=true) + private Output dayOfMonth; + + public Output dayOfMonth() { + return this.dayOfMonth; + } + + @Import(name="recurrenceRange", required=true) + private Output recurrenceRange; + + public Output recurrenceRange() { + return this.recurrenceRange; + } + + @Import(name="timeWindow", required=true) + private Output timeWindow; + + public Output timeWindow() { + return this.timeWindow; + } + + private MaintenanceScheduleMonthlyRecurrenceArgs() {} + + private MaintenanceScheduleMonthlyRecurrenceArgs(MaintenanceScheduleMonthlyRecurrenceArgs $) { + this.dayOfMonth = $.dayOfMonth; + this.recurrenceRange = $.recurrenceRange; + this.timeWindow = $.timeWindow; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(MaintenanceScheduleMonthlyRecurrenceArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private MaintenanceScheduleMonthlyRecurrenceArgs $; + + public Builder() { + $ = new MaintenanceScheduleMonthlyRecurrenceArgs(); + } + + public Builder(MaintenanceScheduleMonthlyRecurrenceArgs defaults) { + $ = new MaintenanceScheduleMonthlyRecurrenceArgs(Objects.requireNonNull(defaults)); + } + + public Builder dayOfMonth(Output dayOfMonth) { + $.dayOfMonth = dayOfMonth; + return this; + } + + public Builder dayOfMonth(Integer dayOfMonth) { + return dayOfMonth(Output.of(dayOfMonth)); + } + + public Builder recurrenceRange(Output recurrenceRange) { + $.recurrenceRange = recurrenceRange; + return this; + } + + public Builder recurrenceRange(MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs recurrenceRange) { + return recurrenceRange(Output.of(recurrenceRange)); + } + + public Builder timeWindow(Output timeWindow) { + $.timeWindow = timeWindow; + return this; + } + + public Builder timeWindow(MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs timeWindow) { + return timeWindow(Output.of(timeWindow)); + } + + public MaintenanceScheduleMonthlyRecurrenceArgs build() { + $.dayOfMonth = Objects.requireNonNull($.dayOfMonth, "expected parameter 'dayOfMonth' to be non-null"); + $.recurrenceRange = Objects.requireNonNull($.recurrenceRange, "expected parameter 'recurrenceRange' to be non-null"); + $.timeWindow = Objects.requireNonNull($.timeWindow, "expected parameter 'timeWindow' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs.java new file mode 100644 index 00000000..af373a1c --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs.java @@ -0,0 +1,80 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; + + +public final class MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs extends com.pulumi.resources.ResourceArgs { + + public static final MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs Empty = new MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs(); + + @Import(name="endDate", required=true) + private Output endDate; + + public Output endDate() { + return this.endDate; + } + + @Import(name="startDate", required=true) + private Output startDate; + + public Output startDate() { + return this.startDate; + } + + private MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs() {} + + private MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs(MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs $) { + this.endDate = $.endDate; + this.startDate = $.startDate; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs $; + + public Builder() { + $ = new MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs(); + } + + public Builder(MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs defaults) { + $ = new MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs(Objects.requireNonNull(defaults)); + } + + public Builder endDate(Output endDate) { + $.endDate = endDate; + return this; + } + + public Builder endDate(String endDate) { + return endDate(Output.of(endDate)); + } + + public Builder startDate(Output startDate) { + $.startDate = startDate; + return this; + } + + public Builder startDate(String startDate) { + return startDate(Output.of(startDate)); + } + + public MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs build() { + $.endDate = Objects.requireNonNull($.endDate, "expected parameter 'endDate' to be non-null"); + $.startDate = Objects.requireNonNull($.startDate, "expected parameter 'startDate' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs.java new file mode 100644 index 00000000..69d8fe08 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs.java @@ -0,0 +1,98 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; + + +public final class MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs extends com.pulumi.resources.ResourceArgs { + + public static final MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs Empty = new MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs(); + + @Import(name="endTime", required=true) + private Output endTime; + + public Output endTime() { + return this.endTime; + } + + @Import(name="startTime", required=true) + private Output startTime; + + public Output startTime() { + return this.startTime; + } + + @Import(name="timeZone", required=true) + private Output timeZone; + + public Output timeZone() { + return this.timeZone; + } + + private MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs() {} + + private MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs(MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs $) { + this.endTime = $.endTime; + this.startTime = $.startTime; + this.timeZone = $.timeZone; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs $; + + public Builder() { + $ = new MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs(); + } + + public Builder(MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs defaults) { + $ = new MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs(Objects.requireNonNull(defaults)); + } + + public Builder endTime(Output endTime) { + $.endTime = endTime; + return this; + } + + public Builder endTime(String endTime) { + return endTime(Output.of(endTime)); + } + + public Builder startTime(Output startTime) { + $.startTime = startTime; + return this; + } + + public Builder startTime(String startTime) { + return startTime(Output.of(startTime)); + } + + public Builder timeZone(Output timeZone) { + $.timeZone = timeZone; + return this; + } + + public Builder timeZone(String timeZone) { + return timeZone(Output.of(timeZone)); + } + + public MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs build() { + $.endTime = Objects.requireNonNull($.endTime, "expected parameter 'endTime' to be non-null"); + $.startTime = Objects.requireNonNull($.startTime, "expected parameter 'startTime' to be non-null"); + $.timeZone = Objects.requireNonNull($.timeZone, "expected parameter 'timeZone' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleOnceRecurrenceArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleOnceRecurrenceArgs.java new file mode 100644 index 00000000..1ca3add6 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleOnceRecurrenceArgs.java @@ -0,0 +1,98 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; + + +public final class MaintenanceScheduleOnceRecurrenceArgs extends com.pulumi.resources.ResourceArgs { + + public static final MaintenanceScheduleOnceRecurrenceArgs Empty = new MaintenanceScheduleOnceRecurrenceArgs(); + + @Import(name="endTime", required=true) + private Output endTime; + + public Output endTime() { + return this.endTime; + } + + @Import(name="startTime", required=true) + private Output startTime; + + public Output startTime() { + return this.startTime; + } + + @Import(name="timeZone", required=true) + private Output timeZone; + + public Output timeZone() { + return this.timeZone; + } + + private MaintenanceScheduleOnceRecurrenceArgs() {} + + private MaintenanceScheduleOnceRecurrenceArgs(MaintenanceScheduleOnceRecurrenceArgs $) { + this.endTime = $.endTime; + this.startTime = $.startTime; + this.timeZone = $.timeZone; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(MaintenanceScheduleOnceRecurrenceArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private MaintenanceScheduleOnceRecurrenceArgs $; + + public Builder() { + $ = new MaintenanceScheduleOnceRecurrenceArgs(); + } + + public Builder(MaintenanceScheduleOnceRecurrenceArgs defaults) { + $ = new MaintenanceScheduleOnceRecurrenceArgs(Objects.requireNonNull(defaults)); + } + + public Builder endTime(Output endTime) { + $.endTime = endTime; + return this; + } + + public Builder endTime(String endTime) { + return endTime(Output.of(endTime)); + } + + public Builder startTime(Output startTime) { + $.startTime = startTime; + return this; + } + + public Builder startTime(String startTime) { + return startTime(Output.of(startTime)); + } + + public Builder timeZone(Output timeZone) { + $.timeZone = timeZone; + return this; + } + + public Builder timeZone(String timeZone) { + return timeZone(Output.of(timeZone)); + } + + public MaintenanceScheduleOnceRecurrenceArgs build() { + $.endTime = Objects.requireNonNull($.endTime, "expected parameter 'endTime' to be non-null"); + $.startTime = Objects.requireNonNull($.startTime, "expected parameter 'startTime' to be non-null"); + $.timeZone = Objects.requireNonNull($.timeZone, "expected parameter 'timeZone' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceArgs.java new file mode 100644 index 00000000..3b094304 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceArgs.java @@ -0,0 +1,100 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.dynatrace.inputs.MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs; +import com.pulumi.dynatrace.inputs.MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs; +import java.lang.String; +import java.util.Objects; + + +public final class MaintenanceScheduleWeeklyRecurrenceArgs extends com.pulumi.resources.ResourceArgs { + + public static final MaintenanceScheduleWeeklyRecurrenceArgs Empty = new MaintenanceScheduleWeeklyRecurrenceArgs(); + + @Import(name="dayOfWeek", required=true) + private Output dayOfWeek; + + public Output dayOfWeek() { + return this.dayOfWeek; + } + + @Import(name="recurrenceRange", required=true) + private Output recurrenceRange; + + public Output recurrenceRange() { + return this.recurrenceRange; + } + + @Import(name="timeWindow", required=true) + private Output timeWindow; + + public Output timeWindow() { + return this.timeWindow; + } + + private MaintenanceScheduleWeeklyRecurrenceArgs() {} + + private MaintenanceScheduleWeeklyRecurrenceArgs(MaintenanceScheduleWeeklyRecurrenceArgs $) { + this.dayOfWeek = $.dayOfWeek; + this.recurrenceRange = $.recurrenceRange; + this.timeWindow = $.timeWindow; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(MaintenanceScheduleWeeklyRecurrenceArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private MaintenanceScheduleWeeklyRecurrenceArgs $; + + public Builder() { + $ = new MaintenanceScheduleWeeklyRecurrenceArgs(); + } + + public Builder(MaintenanceScheduleWeeklyRecurrenceArgs defaults) { + $ = new MaintenanceScheduleWeeklyRecurrenceArgs(Objects.requireNonNull(defaults)); + } + + public Builder dayOfWeek(Output dayOfWeek) { + $.dayOfWeek = dayOfWeek; + return this; + } + + public Builder dayOfWeek(String dayOfWeek) { + return dayOfWeek(Output.of(dayOfWeek)); + } + + public Builder recurrenceRange(Output recurrenceRange) { + $.recurrenceRange = recurrenceRange; + return this; + } + + public Builder recurrenceRange(MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs recurrenceRange) { + return recurrenceRange(Output.of(recurrenceRange)); + } + + public Builder timeWindow(Output timeWindow) { + $.timeWindow = timeWindow; + return this; + } + + public Builder timeWindow(MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs timeWindow) { + return timeWindow(Output.of(timeWindow)); + } + + public MaintenanceScheduleWeeklyRecurrenceArgs build() { + $.dayOfWeek = Objects.requireNonNull($.dayOfWeek, "expected parameter 'dayOfWeek' to be non-null"); + $.recurrenceRange = Objects.requireNonNull($.recurrenceRange, "expected parameter 'recurrenceRange' to be non-null"); + $.timeWindow = Objects.requireNonNull($.timeWindow, "expected parameter 'timeWindow' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs.java new file mode 100644 index 00000000..b7168128 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs.java @@ -0,0 +1,80 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; + + +public final class MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs extends com.pulumi.resources.ResourceArgs { + + public static final MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs Empty = new MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs(); + + @Import(name="endDate", required=true) + private Output endDate; + + public Output endDate() { + return this.endDate; + } + + @Import(name="startDate", required=true) + private Output startDate; + + public Output startDate() { + return this.startDate; + } + + private MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs() {} + + private MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs(MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs $) { + this.endDate = $.endDate; + this.startDate = $.startDate; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs $; + + public Builder() { + $ = new MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs(); + } + + public Builder(MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs defaults) { + $ = new MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs(Objects.requireNonNull(defaults)); + } + + public Builder endDate(Output endDate) { + $.endDate = endDate; + return this; + } + + public Builder endDate(String endDate) { + return endDate(Output.of(endDate)); + } + + public Builder startDate(Output startDate) { + $.startDate = startDate; + return this; + } + + public Builder startDate(String startDate) { + return startDate(Output.of(startDate)); + } + + public MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs build() { + $.endDate = Objects.requireNonNull($.endDate, "expected parameter 'endDate' to be non-null"); + $.startDate = Objects.requireNonNull($.startDate, "expected parameter 'startDate' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs.java new file mode 100644 index 00000000..7330d74e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs.java @@ -0,0 +1,98 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; + + +public final class MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs extends com.pulumi.resources.ResourceArgs { + + public static final MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs Empty = new MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs(); + + @Import(name="endTime", required=true) + private Output endTime; + + public Output endTime() { + return this.endTime; + } + + @Import(name="startTime", required=true) + private Output startTime; + + public Output startTime() { + return this.startTime; + } + + @Import(name="timeZone", required=true) + private Output timeZone; + + public Output timeZone() { + return this.timeZone; + } + + private MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs() {} + + private MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs(MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs $) { + this.endTime = $.endTime; + this.startTime = $.startTime; + this.timeZone = $.timeZone; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs $; + + public Builder() { + $ = new MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs(); + } + + public Builder(MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs defaults) { + $ = new MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs(Objects.requireNonNull(defaults)); + } + + public Builder endTime(Output endTime) { + $.endTime = endTime; + return this; + } + + public Builder endTime(String endTime) { + return endTime(Output.of(endTime)); + } + + public Builder startTime(Output startTime) { + $.startTime = startTime; + return this; + } + + public Builder startTime(String startTime) { + return startTime(Output.of(startTime)); + } + + public Builder timeZone(Output timeZone) { + $.timeZone = timeZone; + return this; + } + + public Builder timeZone(String timeZone) { + return timeZone(Output.of(timeZone)); + } + + public MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs build() { + $.endTime = Objects.requireNonNull($.endTime, "expected parameter 'endTime' to be non-null"); + $.startTime = Objects.requireNonNull($.startTime, "expected parameter 'startTime' to be non-null"); + $.timeZone = Objects.requireNonNull($.timeZone, "expected parameter 'timeZone' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceState.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceState.java new file mode 100644 index 00000000..b00921a8 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/MaintenanceState.java @@ -0,0 +1,208 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.dynatrace.inputs.MaintenanceFilterArgs; +import com.pulumi.dynatrace.inputs.MaintenanceGeneralPropertiesArgs; +import com.pulumi.dynatrace.inputs.MaintenanceScheduleArgs; +import java.lang.Boolean; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class MaintenanceState extends com.pulumi.resources.ResourceArgs { + + public static final MaintenanceState Empty = new MaintenanceState(); + + /** + * The maintenance window is enabled or disabled + * + */ + @Import(name="enabled") + private @Nullable Output enabled; + + /** + * @return The maintenance window is enabled or disabled + * + */ + public Optional> enabled() { + return Optional.ofNullable(this.enabled); + } + + /** + * The filters of the maintenance window + * + */ + @Import(name="filters") + private @Nullable Output> filters; + + /** + * @return The filters of the maintenance window + * + */ + public Optional>> filters() { + return Optional.ofNullable(this.filters); + } + + /** + * The general properties of the maintenance window + * + */ + @Import(name="generalProperties") + private @Nullable Output generalProperties; + + /** + * @return The general properties of the maintenance window + * + */ + public Optional> generalProperties() { + return Optional.ofNullable(this.generalProperties); + } + + /** + * The schedule of the maintenance window + * + */ + @Import(name="schedule") + private @Nullable Output schedule; + + /** + * @return The schedule of the maintenance window + * + */ + public Optional> schedule() { + return Optional.ofNullable(this.schedule); + } + + private MaintenanceState() {} + + private MaintenanceState(MaintenanceState $) { + this.enabled = $.enabled; + this.filters = $.filters; + this.generalProperties = $.generalProperties; + this.schedule = $.schedule; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(MaintenanceState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private MaintenanceState $; + + public Builder() { + $ = new MaintenanceState(); + } + + public Builder(MaintenanceState defaults) { + $ = new MaintenanceState(Objects.requireNonNull(defaults)); + } + + /** + * @param enabled The maintenance window is enabled or disabled + * + * @return builder + * + */ + public Builder enabled(@Nullable Output enabled) { + $.enabled = enabled; + return this; + } + + /** + * @param enabled The maintenance window is enabled or disabled + * + * @return builder + * + */ + public Builder enabled(Boolean enabled) { + return enabled(Output.of(enabled)); + } + + /** + * @param filters The filters of the maintenance window + * + * @return builder + * + */ + public Builder filters(@Nullable Output> filters) { + $.filters = filters; + return this; + } + + /** + * @param filters The filters of the maintenance window + * + * @return builder + * + */ + public Builder filters(List filters) { + return filters(Output.of(filters)); + } + + /** + * @param filters The filters of the maintenance window + * + * @return builder + * + */ + public Builder filters(MaintenanceFilterArgs... filters) { + return filters(List.of(filters)); + } + + /** + * @param generalProperties The general properties of the maintenance window + * + * @return builder + * + */ + public Builder generalProperties(@Nullable Output generalProperties) { + $.generalProperties = generalProperties; + return this; + } + + /** + * @param generalProperties The general properties of the maintenance window + * + * @return builder + * + */ + public Builder generalProperties(MaintenanceGeneralPropertiesArgs generalProperties) { + return generalProperties(Output.of(generalProperties)); + } + + /** + * @param schedule The schedule of the maintenance window + * + * @return builder + * + */ + public Builder schedule(@Nullable Output schedule) { + $.schedule = schedule; + return this; + } + + /** + * @param schedule The schedule of the maintenance window + * + * @return builder + * + */ + public Builder schedule(MaintenanceScheduleArgs schedule) { + return schedule(Output.of(schedule)); + } + + public MaintenanceState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/OpsGenieNotificationState.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/OpsGenieNotificationState.java new file mode 100644 index 00000000..b59124a2 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/OpsGenieNotificationState.java @@ -0,0 +1,269 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class OpsGenieNotificationState extends com.pulumi.resources.ResourceArgs { + + public static final OpsGenieNotificationState Empty = new OpsGenieNotificationState(); + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active") + private @Nullable Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Optional> active() { + return Optional.ofNullable(this.active); + } + + /** + * The API key to access OpsGenie + * + */ + @Import(name="apiKey") + private @Nullable Output apiKey; + + /** + * @return The API key to access OpsGenie + * + */ + public Optional> apiKey() { + return Optional.ofNullable(this.apiKey); + } + + /** + * The region domain of the OpsGenie + * + */ + @Import(name="domain") + private @Nullable Output domain; + + /** + * @return The region domain of the OpsGenie + * + */ + public Optional> domain() { + return Optional.ofNullable(this.domain); + } + + /** + * The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + * + */ + @Import(name="message") + private @Nullable Output message; + + /** + * @return The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + * + */ + public Optional> message() { + return Optional.ofNullable(this.message); + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile") + private @Nullable Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Optional> profile() { + return Optional.ofNullable(this.profile); + } + + private OpsGenieNotificationState() {} + + private OpsGenieNotificationState(OpsGenieNotificationState $) { + this.active = $.active; + this.apiKey = $.apiKey; + this.domain = $.domain; + this.message = $.message; + this.name = $.name; + this.profile = $.profile; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(OpsGenieNotificationState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private OpsGenieNotificationState $; + + public Builder() { + $ = new OpsGenieNotificationState(); + } + + public Builder(OpsGenieNotificationState defaults) { + $ = new OpsGenieNotificationState(Objects.requireNonNull(defaults)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(@Nullable Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param apiKey The API key to access OpsGenie + * + * @return builder + * + */ + public Builder apiKey(@Nullable Output apiKey) { + $.apiKey = apiKey; + return this; + } + + /** + * @param apiKey The API key to access OpsGenie + * + * @return builder + * + */ + public Builder apiKey(String apiKey) { + return apiKey(Output.of(apiKey)); + } + + /** + * @param domain The region domain of the OpsGenie + * + * @return builder + * + */ + public Builder domain(@Nullable Output domain) { + $.domain = domain; + return this; + } + + /** + * @param domain The region domain of the OpsGenie + * + * @return builder + * + */ + public Builder domain(String domain) { + return domain(Output.of(domain)); + } + + /** + * @param message The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + * + * @return builder + * + */ + public Builder message(@Nullable Output message) { + $.message = message; + return this; + } + + /** + * @param message The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + * + * @return builder + * + */ + public Builder message(String message) { + return message(Output.of(message)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(@Nullable Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + public OpsGenieNotificationState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/PagerDutyNotificationState.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/PagerDutyNotificationState.java new file mode 100644 index 00000000..f8c1385e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/PagerDutyNotificationState.java @@ -0,0 +1,269 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class PagerDutyNotificationState extends com.pulumi.resources.ResourceArgs { + + public static final PagerDutyNotificationState Empty = new PagerDutyNotificationState(); + + /** + * The name of the PagerDuty account + * + */ + @Import(name="account") + private @Nullable Output account; + + /** + * @return The name of the PagerDuty account + * + */ + public Optional> account() { + return Optional.ofNullable(this.account); + } + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active") + private @Nullable Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Optional> active() { + return Optional.ofNullable(this.active); + } + + /** + * The API key to access PagerDuty + * + */ + @Import(name="apiKey") + private @Nullable Output apiKey; + + /** + * @return The API key to access PagerDuty + * + */ + public Optional> apiKey() { + return Optional.ofNullable(this.apiKey); + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile") + private @Nullable Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Optional> profile() { + return Optional.ofNullable(this.profile); + } + + /** + * The name of the PagerDuty Service + * + */ + @Import(name="service") + private @Nullable Output service; + + /** + * @return The name of the PagerDuty Service + * + */ + public Optional> service() { + return Optional.ofNullable(this.service); + } + + private PagerDutyNotificationState() {} + + private PagerDutyNotificationState(PagerDutyNotificationState $) { + this.account = $.account; + this.active = $.active; + this.apiKey = $.apiKey; + this.name = $.name; + this.profile = $.profile; + this.service = $.service; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(PagerDutyNotificationState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private PagerDutyNotificationState $; + + public Builder() { + $ = new PagerDutyNotificationState(); + } + + public Builder(PagerDutyNotificationState defaults) { + $ = new PagerDutyNotificationState(Objects.requireNonNull(defaults)); + } + + /** + * @param account The name of the PagerDuty account + * + * @return builder + * + */ + public Builder account(@Nullable Output account) { + $.account = account; + return this; + } + + /** + * @param account The name of the PagerDuty account + * + * @return builder + * + */ + public Builder account(String account) { + return account(Output.of(account)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(@Nullable Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param apiKey The API key to access PagerDuty + * + * @return builder + * + */ + public Builder apiKey(@Nullable Output apiKey) { + $.apiKey = apiKey; + return this; + } + + /** + * @param apiKey The API key to access PagerDuty + * + * @return builder + * + */ + public Builder apiKey(String apiKey) { + return apiKey(Output.of(apiKey)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(@Nullable Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param service The name of the PagerDuty Service + * + * @return builder + * + */ + public Builder service(@Nullable Output service) { + $.service = service; + return this; + } + + /** + * @param service The name of the PagerDuty Service + * + * @return builder + * + */ + public Builder service(String service) { + return service(Output.of(service)); + } + + public PagerDutyNotificationState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/ServiceNowNotificationState.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/ServiceNowNotificationState.java new file mode 100644 index 00000000..9e3647f5 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/ServiceNowNotificationState.java @@ -0,0 +1,417 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ServiceNowNotificationState extends com.pulumi.resources.ResourceArgs { + + public static final ServiceNowNotificationState Empty = new ServiceNowNotificationState(); + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active") + private @Nullable Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Optional> active() { + return Optional.ofNullable(this.active); + } + + /** + * Send events into ServiceNow ITOM + * + */ + @Import(name="events") + private @Nullable Output events; + + /** + * @return Send events into ServiceNow ITOM + * + */ + public Optional> events() { + return Optional.ofNullable(this.events); + } + + /** + * Send incidents into ServiceNow ITSM + * + */ + @Import(name="incidents") + private @Nullable Output incidents; + + /** + * @return Send incidents into ServiceNow ITSM + * + */ + public Optional> incidents() { + return Optional.ofNullable(this.incidents); + } + + /** + * The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + * + */ + @Import(name="instance") + private @Nullable Output instance; + + /** + * @return The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + * + */ + public Optional> instance() { + return Optional.ofNullable(this.instance); + } + + /** + * The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Import(name="message") + private @Nullable Output message; + + /** + * @return The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Optional> message() { + return Optional.ofNullable(this.message); + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The password to the ServiceNow account + * + */ + @Import(name="password") + private @Nullable Output password; + + /** + * @return The password to the ServiceNow account + * + */ + public Optional> password() { + return Optional.ofNullable(this.password); + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile") + private @Nullable Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Optional> profile() { + return Optional.ofNullable(this.profile); + } + + /** + * The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + * + */ + @Import(name="url") + private @Nullable Output url; + + /** + * @return The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + * + */ + public Optional> url() { + return Optional.ofNullable(this.url); + } + + /** + * The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + * + */ + @Import(name="username") + private @Nullable Output username; + + /** + * @return The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + * + */ + public Optional> username() { + return Optional.ofNullable(this.username); + } + + private ServiceNowNotificationState() {} + + private ServiceNowNotificationState(ServiceNowNotificationState $) { + this.active = $.active; + this.events = $.events; + this.incidents = $.incidents; + this.instance = $.instance; + this.message = $.message; + this.name = $.name; + this.password = $.password; + this.profile = $.profile; + this.url = $.url; + this.username = $.username; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ServiceNowNotificationState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ServiceNowNotificationState $; + + public Builder() { + $ = new ServiceNowNotificationState(); + } + + public Builder(ServiceNowNotificationState defaults) { + $ = new ServiceNowNotificationState(Objects.requireNonNull(defaults)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(@Nullable Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param events Send events into ServiceNow ITOM + * + * @return builder + * + */ + public Builder events(@Nullable Output events) { + $.events = events; + return this; + } + + /** + * @param events Send events into ServiceNow ITOM + * + * @return builder + * + */ + public Builder events(Boolean events) { + return events(Output.of(events)); + } + + /** + * @param incidents Send incidents into ServiceNow ITSM + * + * @return builder + * + */ + public Builder incidents(@Nullable Output incidents) { + $.incidents = incidents; + return this; + } + + /** + * @param incidents Send incidents into ServiceNow ITSM + * + * @return builder + * + */ + public Builder incidents(Boolean incidents) { + return incidents(Output.of(incidents)); + } + + /** + * @param instance The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + * + * @return builder + * + */ + public Builder instance(@Nullable Output instance) { + $.instance = instance; + return this; + } + + /** + * @param instance The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + * + * @return builder + * + */ + public Builder instance(String instance) { + return instance(Output.of(instance)); + } + + /** + * @param message The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder message(@Nullable Output message) { + $.message = message; + return this; + } + + /** + * @param message The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder message(String message) { + return message(Output.of(message)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param password The password to the ServiceNow account + * + * @return builder + * + */ + public Builder password(@Nullable Output password) { + $.password = password; + return this; + } + + /** + * @param password The password to the ServiceNow account + * + * @return builder + * + */ + public Builder password(String password) { + return password(Output.of(password)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(@Nullable Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param url The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + * + * @return builder + * + */ + public Builder url(@Nullable Output url) { + $.url = url; + return this; + } + + /** + * @param url The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + * + * @return builder + * + */ + public Builder url(String url) { + return url(Output.of(url)); + } + + /** + * @param username The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + * + * @return builder + * + */ + public Builder username(@Nullable Output username) { + $.username = username; + return this; + } + + /** + * @param username The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + * + * @return builder + * + */ + public Builder username(String username) { + return username(Output.of(username)); + } + + public ServiceNowNotificationState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/SlackNotificationState.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/SlackNotificationState.java new file mode 100644 index 00000000..0f9d6aeb --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/SlackNotificationState.java @@ -0,0 +1,269 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class SlackNotificationState extends com.pulumi.resources.ResourceArgs { + + public static final SlackNotificationState Empty = new SlackNotificationState(); + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active") + private @Nullable Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Optional> active() { + return Optional.ofNullable(this.active); + } + + /** + * The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + * + */ + @Import(name="channel") + private @Nullable Output channel; + + /** + * @return The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + * + */ + public Optional> channel() { + return Optional.ofNullable(this.channel); + } + + /** + * The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Import(name="message") + private @Nullable Output message; + + /** + * @return The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Optional> message() { + return Optional.ofNullable(this.message); + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile") + private @Nullable Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Optional> profile() { + return Optional.ofNullable(this.profile); + } + + /** + * The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + * + */ + @Import(name="url") + private @Nullable Output url; + + /** + * @return The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + * + */ + public Optional> url() { + return Optional.ofNullable(this.url); + } + + private SlackNotificationState() {} + + private SlackNotificationState(SlackNotificationState $) { + this.active = $.active; + this.channel = $.channel; + this.message = $.message; + this.name = $.name; + this.profile = $.profile; + this.url = $.url; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SlackNotificationState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SlackNotificationState $; + + public Builder() { + $ = new SlackNotificationState(); + } + + public Builder(SlackNotificationState defaults) { + $ = new SlackNotificationState(Objects.requireNonNull(defaults)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(@Nullable Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param channel The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + * + * @return builder + * + */ + public Builder channel(@Nullable Output channel) { + $.channel = channel; + return this; + } + + /** + * @param channel The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + * + * @return builder + * + */ + public Builder channel(String channel) { + return channel(Output.of(channel)); + } + + /** + * @param message The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder message(@Nullable Output message) { + $.message = message; + return this; + } + + /** + * @param message The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder message(String message) { + return message(Output.of(message)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(@Nullable Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param url The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + * + * @return builder + * + */ + public Builder url(@Nullable Output url) { + $.url = url; + return this; + } + + /** + * @param url The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + * + * @return builder + * + */ + public Builder url(String url) { + return url(Output.of(url)); + } + + public SlackNotificationState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/TrrelloNotificationState.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/TrrelloNotificationState.java new file mode 100644 index 00000000..e89d4a17 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/TrrelloNotificationState.java @@ -0,0 +1,417 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class TrrelloNotificationState extends com.pulumi.resources.ResourceArgs { + + public static final TrrelloNotificationState Empty = new TrrelloNotificationState(); + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active") + private @Nullable Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Optional> active() { + return Optional.ofNullable(this.active); + } + + /** + * The application key for the Trello account + * + */ + @Import(name="applicationKey") + private @Nullable Output applicationKey; + + /** + * @return The application key for the Trello account + * + */ + public Optional> applicationKey() { + return Optional.ofNullable(this.applicationKey); + } + + /** + * The application token for the Trello account + * + */ + @Import(name="authorizationToken") + private @Nullable Output authorizationToken; + + /** + * @return The application token for the Trello account + * + */ + public Optional> authorizationToken() { + return Optional.ofNullable(this.authorizationToken); + } + + /** + * The Trello board to which the card should be assigned + * + */ + @Import(name="boardId") + private @Nullable Output boardId; + + /** + * @return The Trello board to which the card should be assigned + * + */ + public Optional> boardId() { + return Optional.ofNullable(this.boardId); + } + + /** + * The description of the Trello card. You can use same placeholders as in card text + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return The description of the Trello card. You can use same placeholders as in card text + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * The Trello list to which the card should be assigned + * + */ + @Import(name="listId") + private @Nullable Output listId; + + /** + * @return The Trello list to which the card should be assigned + * + */ + public Optional> listId() { + return Optional.ofNullable(this.listId); + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile") + private @Nullable Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Optional> profile() { + return Optional.ofNullable(this.profile); + } + + /** + * The Trello list to which the card of the resolved problem should be assigned + * + */ + @Import(name="resolvedListId") + private @Nullable Output resolvedListId; + + /** + * @return The Trello list to which the card of the resolved problem should be assigned + * + */ + public Optional> resolvedListId() { + return Optional.ofNullable(this.resolvedListId); + } + + /** + * The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Import(name="text") + private @Nullable Output text; + + /** + * @return The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Optional> text() { + return Optional.ofNullable(this.text); + } + + private TrrelloNotificationState() {} + + private TrrelloNotificationState(TrrelloNotificationState $) { + this.active = $.active; + this.applicationKey = $.applicationKey; + this.authorizationToken = $.authorizationToken; + this.boardId = $.boardId; + this.description = $.description; + this.listId = $.listId; + this.name = $.name; + this.profile = $.profile; + this.resolvedListId = $.resolvedListId; + this.text = $.text; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(TrrelloNotificationState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private TrrelloNotificationState $; + + public Builder() { + $ = new TrrelloNotificationState(); + } + + public Builder(TrrelloNotificationState defaults) { + $ = new TrrelloNotificationState(Objects.requireNonNull(defaults)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(@Nullable Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param applicationKey The application key for the Trello account + * + * @return builder + * + */ + public Builder applicationKey(@Nullable Output applicationKey) { + $.applicationKey = applicationKey; + return this; + } + + /** + * @param applicationKey The application key for the Trello account + * + * @return builder + * + */ + public Builder applicationKey(String applicationKey) { + return applicationKey(Output.of(applicationKey)); + } + + /** + * @param authorizationToken The application token for the Trello account + * + * @return builder + * + */ + public Builder authorizationToken(@Nullable Output authorizationToken) { + $.authorizationToken = authorizationToken; + return this; + } + + /** + * @param authorizationToken The application token for the Trello account + * + * @return builder + * + */ + public Builder authorizationToken(String authorizationToken) { + return authorizationToken(Output.of(authorizationToken)); + } + + /** + * @param boardId The Trello board to which the card should be assigned + * + * @return builder + * + */ + public Builder boardId(@Nullable Output boardId) { + $.boardId = boardId; + return this; + } + + /** + * @param boardId The Trello board to which the card should be assigned + * + * @return builder + * + */ + public Builder boardId(String boardId) { + return boardId(Output.of(boardId)); + } + + /** + * @param description The description of the Trello card. You can use same placeholders as in card text + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description The description of the Trello card. You can use same placeholders as in card text + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param listId The Trello list to which the card should be assigned + * + * @return builder + * + */ + public Builder listId(@Nullable Output listId) { + $.listId = listId; + return this; + } + + /** + * @param listId The Trello list to which the card should be assigned + * + * @return builder + * + */ + public Builder listId(String listId) { + return listId(Output.of(listId)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(@Nullable Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param resolvedListId The Trello list to which the card of the resolved problem should be assigned + * + * @return builder + * + */ + public Builder resolvedListId(@Nullable Output resolvedListId) { + $.resolvedListId = resolvedListId; + return this; + } + + /** + * @param resolvedListId The Trello list to which the card of the resolved problem should be assigned + * + * @return builder + * + */ + public Builder resolvedListId(String resolvedListId) { + return resolvedListId(Output.of(resolvedListId)); + } + + /** + * @param text The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder text(@Nullable Output text) { + $.text = text; + return this; + } + + /** + * @param text The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder text(String text) { + return text(Output.of(text)); + } + + public TrrelloNotificationState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/VictorOpsNotificationState.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/VictorOpsNotificationState.java new file mode 100644 index 00000000..ca106861 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/VictorOpsNotificationState.java @@ -0,0 +1,269 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VictorOpsNotificationState extends com.pulumi.resources.ResourceArgs { + + public static final VictorOpsNotificationState Empty = new VictorOpsNotificationState(); + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active") + private @Nullable Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Optional> active() { + return Optional.ofNullable(this.active); + } + + /** + * The API key for the target VictorOps account + * + */ + @Import(name="apiKey") + private @Nullable Output apiKey; + + /** + * @return The API key for the target VictorOps account + * + */ + public Optional> apiKey() { + return Optional.ofNullable(this.apiKey); + } + + /** + * The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + * + */ + @Import(name="message") + private @Nullable Output message; + + /** + * @return The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + * + */ + public Optional> message() { + return Optional.ofNullable(this.message); + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile") + private @Nullable Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Optional> profile() { + return Optional.ofNullable(this.profile); + } + + /** + * The routing key, defining the group to be notified + * + */ + @Import(name="routingKey") + private @Nullable Output routingKey; + + /** + * @return The routing key, defining the group to be notified + * + */ + public Optional> routingKey() { + return Optional.ofNullable(this.routingKey); + } + + private VictorOpsNotificationState() {} + + private VictorOpsNotificationState(VictorOpsNotificationState $) { + this.active = $.active; + this.apiKey = $.apiKey; + this.message = $.message; + this.name = $.name; + this.profile = $.profile; + this.routingKey = $.routingKey; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VictorOpsNotificationState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VictorOpsNotificationState $; + + public Builder() { + $ = new VictorOpsNotificationState(); + } + + public Builder(VictorOpsNotificationState defaults) { + $ = new VictorOpsNotificationState(Objects.requireNonNull(defaults)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(@Nullable Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param apiKey The API key for the target VictorOps account + * + * @return builder + * + */ + public Builder apiKey(@Nullable Output apiKey) { + $.apiKey = apiKey; + return this; + } + + /** + * @param apiKey The API key for the target VictorOps account + * + * @return builder + * + */ + public Builder apiKey(String apiKey) { + return apiKey(Output.of(apiKey)); + } + + /** + * @param message The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + * + * @return builder + * + */ + public Builder message(@Nullable Output message) { + $.message = message; + return this; + } + + /** + * @param message The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + * + * @return builder + * + */ + public Builder message(String message) { + return message(Output.of(message)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(@Nullable Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param routingKey The routing key, defining the group to be notified + * + * @return builder + * + */ + public Builder routingKey(@Nullable Output routingKey) { + $.routingKey = routingKey; + return this; + } + + /** + * @param routingKey The routing key, defining the group to be notified + * + * @return builder + * + */ + public Builder routingKey(String routingKey) { + return routingKey(Output.of(routingKey)); + } + + public VictorOpsNotificationState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersArgs.java new file mode 100644 index 00000000..54c803b7 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersArgs.java @@ -0,0 +1,93 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.dynatrace.inputs.WebhookNotificationHeadersHeaderArgs; +import java.util.List; +import java.util.Objects; + + +public final class WebhookNotificationHeadersArgs extends com.pulumi.resources.ResourceArgs { + + public static final WebhookNotificationHeadersArgs Empty = new WebhookNotificationHeadersArgs(); + + /** + * An additional HTTP Header to include when sending requests + * + */ + @Import(name="headers", required=true) + private Output> headers; + + /** + * @return An additional HTTP Header to include when sending requests + * + */ + public Output> headers() { + return this.headers; + } + + private WebhookNotificationHeadersArgs() {} + + private WebhookNotificationHeadersArgs(WebhookNotificationHeadersArgs $) { + this.headers = $.headers; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(WebhookNotificationHeadersArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private WebhookNotificationHeadersArgs $; + + public Builder() { + $ = new WebhookNotificationHeadersArgs(); + } + + public Builder(WebhookNotificationHeadersArgs defaults) { + $ = new WebhookNotificationHeadersArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param headers An additional HTTP Header to include when sending requests + * + * @return builder + * + */ + public Builder headers(Output> headers) { + $.headers = headers; + return this; + } + + /** + * @param headers An additional HTTP Header to include when sending requests + * + * @return builder + * + */ + public Builder headers(List headers) { + return headers(Output.of(headers)); + } + + /** + * @param headers An additional HTTP Header to include when sending requests + * + * @return builder + * + */ + public Builder headers(WebhookNotificationHeadersHeaderArgs... headers) { + return headers(List.of(headers)); + } + + public WebhookNotificationHeadersArgs build() { + $.headers = Objects.requireNonNull($.headers, "expected parameter 'headers' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersHeaderArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersHeaderArgs.java new file mode 100644 index 00000000..841d9848 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/WebhookNotificationHeadersHeaderArgs.java @@ -0,0 +1,118 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class WebhookNotificationHeadersHeaderArgs extends com.pulumi.resources.ResourceArgs { + + public static final WebhookNotificationHeadersHeaderArgs Empty = new WebhookNotificationHeadersHeaderArgs(); + + /** + * The name of the notification configuration + * + */ + @Import(name="name", required=true) + private Output name; + + /** + * @return The name of the notification configuration + * + */ + public Output name() { + return this.name; + } + + @Import(name="secretValue") + private @Nullable Output secretValue; + + public Optional> secretValue() { + return Optional.ofNullable(this.secretValue); + } + + @Import(name="value") + private @Nullable Output value; + + public Optional> value() { + return Optional.ofNullable(this.value); + } + + private WebhookNotificationHeadersHeaderArgs() {} + + private WebhookNotificationHeadersHeaderArgs(WebhookNotificationHeadersHeaderArgs $) { + this.name = $.name; + this.secretValue = $.secretValue; + this.value = $.value; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(WebhookNotificationHeadersHeaderArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private WebhookNotificationHeadersHeaderArgs $; + + public Builder() { + $ = new WebhookNotificationHeadersHeaderArgs(); + } + + public Builder(WebhookNotificationHeadersHeaderArgs defaults) { + $ = new WebhookNotificationHeadersHeaderArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + public Builder secretValue(@Nullable Output secretValue) { + $.secretValue = secretValue; + return this; + } + + public Builder secretValue(String secretValue) { + return secretValue(Output.of(secretValue)); + } + + public Builder value(@Nullable Output value) { + $.value = value; + return this; + } + + public Builder value(String value) { + return value(Output.of(value)); + } + + public WebhookNotificationHeadersHeaderArgs build() { + $.name = Objects.requireNonNull($.name, "expected parameter 'name' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/WebhookNotificationState.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/WebhookNotificationState.java new file mode 100644 index 00000000..6a8e9a7c --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/WebhookNotificationState.java @@ -0,0 +1,381 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.dynatrace.inputs.WebhookNotificationHeadersArgs; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class WebhookNotificationState extends com.pulumi.resources.ResourceArgs { + + public static final WebhookNotificationState Empty = new WebhookNotificationState(); + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active") + private @Nullable Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Optional> active() { + return Optional.ofNullable(this.active); + } + + /** + * A list of the additional HTTP headers + * + */ + @Import(name="headers") + private @Nullable Output headers; + + /** + * @return A list of the additional HTTP headers + * + */ + public Optional> headers() { + return Optional.ofNullable(this.headers); + } + + /** + * Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + */ + @Import(name="insecure") + private @Nullable Output insecure; + + /** + * @return Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + */ + public Optional> insecure() { + return Optional.ofNullable(this.insecure); + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * Send email if problem is closed + * + */ + @Import(name="notifyClosedProblems") + private @Nullable Output notifyClosedProblems; + + /** + * @return Send email if problem is closed + * + */ + public Optional> notifyClosedProblems() { + return Optional.ofNullable(this.notifyClosedProblems); + } + + /** + * Call webhook if new events merge into existing problems + * + */ + @Import(name="notifyEventMerges") + private @Nullable Output notifyEventMerges; + + /** + * @return Call webhook if new events merge into existing problems + * + */ + public Optional> notifyEventMerges() { + return Optional.ofNullable(this.notifyEventMerges); + } + + /** + * The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Import(name="payload") + private @Nullable Output payload; + + /** + * @return The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Optional> payload() { + return Optional.ofNullable(this.payload); + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile") + private @Nullable Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Optional> profile() { + return Optional.ofNullable(this.profile); + } + + /** + * The URL of the WebHook endpoint + * + */ + @Import(name="url") + private @Nullable Output url; + + /** + * @return The URL of the WebHook endpoint + * + */ + public Optional> url() { + return Optional.ofNullable(this.url); + } + + private WebhookNotificationState() {} + + private WebhookNotificationState(WebhookNotificationState $) { + this.active = $.active; + this.headers = $.headers; + this.insecure = $.insecure; + this.name = $.name; + this.notifyClosedProblems = $.notifyClosedProblems; + this.notifyEventMerges = $.notifyEventMerges; + this.payload = $.payload; + this.profile = $.profile; + this.url = $.url; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(WebhookNotificationState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private WebhookNotificationState $; + + public Builder() { + $ = new WebhookNotificationState(); + } + + public Builder(WebhookNotificationState defaults) { + $ = new WebhookNotificationState(Objects.requireNonNull(defaults)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(@Nullable Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param headers A list of the additional HTTP headers + * + * @return builder + * + */ + public Builder headers(@Nullable Output headers) { + $.headers = headers; + return this; + } + + /** + * @param headers A list of the additional HTTP headers + * + * @return builder + * + */ + public Builder headers(WebhookNotificationHeadersArgs headers) { + return headers(Output.of(headers)); + } + + /** + * @param insecure Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + * @return builder + * + */ + public Builder insecure(@Nullable Output insecure) { + $.insecure = insecure; + return this; + } + + /** + * @param insecure Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + * @return builder + * + */ + public Builder insecure(Boolean insecure) { + return insecure(Output.of(insecure)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param notifyClosedProblems Send email if problem is closed + * + * @return builder + * + */ + public Builder notifyClosedProblems(@Nullable Output notifyClosedProblems) { + $.notifyClosedProblems = notifyClosedProblems; + return this; + } + + /** + * @param notifyClosedProblems Send email if problem is closed + * + * @return builder + * + */ + public Builder notifyClosedProblems(Boolean notifyClosedProblems) { + return notifyClosedProblems(Output.of(notifyClosedProblems)); + } + + /** + * @param notifyEventMerges Call webhook if new events merge into existing problems + * + * @return builder + * + */ + public Builder notifyEventMerges(@Nullable Output notifyEventMerges) { + $.notifyEventMerges = notifyEventMerges; + return this; + } + + /** + * @param notifyEventMerges Call webhook if new events merge into existing problems + * + * @return builder + * + */ + public Builder notifyEventMerges(Boolean notifyEventMerges) { + return notifyEventMerges(Output.of(notifyEventMerges)); + } + + /** + * @param payload The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder payload(@Nullable Output payload) { + $.payload = payload; + return this; + } + + /** + * @param payload The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder payload(String payload) { + return payload(Output.of(payload)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(@Nullable Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param url The URL of the WebHook endpoint + * + * @return builder + * + */ + public Builder url(@Nullable Output url) { + $.url = url; + return this; + } + + /** + * @param url The URL of the WebHook endpoint + * + * @return builder + * + */ + public Builder url(String url) { + return url(Output.of(url)); + } + + public WebhookNotificationState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/XmattersNotificationHeadersArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/XmattersNotificationHeadersArgs.java new file mode 100644 index 00000000..4e6f7dde --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/XmattersNotificationHeadersArgs.java @@ -0,0 +1,93 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.dynatrace.inputs.XmattersNotificationHeadersHeaderArgs; +import java.util.List; +import java.util.Objects; + + +public final class XmattersNotificationHeadersArgs extends com.pulumi.resources.ResourceArgs { + + public static final XmattersNotificationHeadersArgs Empty = new XmattersNotificationHeadersArgs(); + + /** + * An additional HTTP Header to include when sending requests + * + */ + @Import(name="headers", required=true) + private Output> headers; + + /** + * @return An additional HTTP Header to include when sending requests + * + */ + public Output> headers() { + return this.headers; + } + + private XmattersNotificationHeadersArgs() {} + + private XmattersNotificationHeadersArgs(XmattersNotificationHeadersArgs $) { + this.headers = $.headers; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(XmattersNotificationHeadersArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private XmattersNotificationHeadersArgs $; + + public Builder() { + $ = new XmattersNotificationHeadersArgs(); + } + + public Builder(XmattersNotificationHeadersArgs defaults) { + $ = new XmattersNotificationHeadersArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param headers An additional HTTP Header to include when sending requests + * + * @return builder + * + */ + public Builder headers(Output> headers) { + $.headers = headers; + return this; + } + + /** + * @param headers An additional HTTP Header to include when sending requests + * + * @return builder + * + */ + public Builder headers(List headers) { + return headers(Output.of(headers)); + } + + /** + * @param headers An additional HTTP Header to include when sending requests + * + * @return builder + * + */ + public Builder headers(XmattersNotificationHeadersHeaderArgs... headers) { + return headers(List.of(headers)); + } + + public XmattersNotificationHeadersArgs build() { + $.headers = Objects.requireNonNull($.headers, "expected parameter 'headers' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/XmattersNotificationHeadersHeaderArgs.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/XmattersNotificationHeadersHeaderArgs.java new file mode 100644 index 00000000..278177b6 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/XmattersNotificationHeadersHeaderArgs.java @@ -0,0 +1,118 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class XmattersNotificationHeadersHeaderArgs extends com.pulumi.resources.ResourceArgs { + + public static final XmattersNotificationHeadersHeaderArgs Empty = new XmattersNotificationHeadersHeaderArgs(); + + /** + * The name of the notification configuration + * + */ + @Import(name="name", required=true) + private Output name; + + /** + * @return The name of the notification configuration + * + */ + public Output name() { + return this.name; + } + + @Import(name="secretValue") + private @Nullable Output secretValue; + + public Optional> secretValue() { + return Optional.ofNullable(this.secretValue); + } + + @Import(name="value") + private @Nullable Output value; + + public Optional> value() { + return Optional.ofNullable(this.value); + } + + private XmattersNotificationHeadersHeaderArgs() {} + + private XmattersNotificationHeadersHeaderArgs(XmattersNotificationHeadersHeaderArgs $) { + this.name = $.name; + this.secretValue = $.secretValue; + this.value = $.value; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(XmattersNotificationHeadersHeaderArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private XmattersNotificationHeadersHeaderArgs $; + + public Builder() { + $ = new XmattersNotificationHeadersHeaderArgs(); + } + + public Builder(XmattersNotificationHeadersHeaderArgs defaults) { + $ = new XmattersNotificationHeadersHeaderArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + public Builder secretValue(@Nullable Output secretValue) { + $.secretValue = secretValue; + return this; + } + + public Builder secretValue(String secretValue) { + return secretValue(Output.of(secretValue)); + } + + public Builder value(@Nullable Output value) { + $.value = value; + return this; + } + + public Builder value(String value) { + return value(Output.of(value)); + } + + public XmattersNotificationHeadersHeaderArgs build() { + $.name = Objects.requireNonNull($.name, "expected parameter 'name' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/XmattersNotificationState.java b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/XmattersNotificationState.java new file mode 100644 index 00000000..d8b8ca4a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/inputs/XmattersNotificationState.java @@ -0,0 +1,307 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.dynatrace.inputs.XmattersNotificationHeadersArgs; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class XmattersNotificationState extends com.pulumi.resources.ResourceArgs { + + public static final XmattersNotificationState Empty = new XmattersNotificationState(); + + /** + * The configuration is enabled (`true`) or disabled (`false`) + * + */ + @Import(name="active") + private @Nullable Output active; + + /** + * @return The configuration is enabled (`true`) or disabled (`false`) + * + */ + public Optional> active() { + return Optional.ofNullable(this.active); + } + + /** + * A list of the additional HTTP headers + * + */ + @Import(name="headers") + private @Nullable Output headers; + + /** + * @return A list of the additional HTTP headers + * + */ + public Optional> headers() { + return Optional.ofNullable(this.headers); + } + + /** + * Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + */ + @Import(name="insecure") + private @Nullable Output insecure; + + /** + * @return Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + */ + public Optional> insecure() { + return Optional.ofNullable(this.insecure); + } + + /** + * The name of the notification configuration + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the notification configuration + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + @Import(name="payload") + private @Nullable Output payload; + + /** + * @return The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + */ + public Optional> payload() { + return Optional.ofNullable(this.payload); + } + + /** + * The ID of the associated alerting profile + * + */ + @Import(name="profile") + private @Nullable Output profile; + + /** + * @return The ID of the associated alerting profile + * + */ + public Optional> profile() { + return Optional.ofNullable(this.profile); + } + + /** + * The URL of the WebHook endpoint + * + */ + @Import(name="url") + private @Nullable Output url; + + /** + * @return The URL of the WebHook endpoint + * + */ + public Optional> url() { + return Optional.ofNullable(this.url); + } + + private XmattersNotificationState() {} + + private XmattersNotificationState(XmattersNotificationState $) { + this.active = $.active; + this.headers = $.headers; + this.insecure = $.insecure; + this.name = $.name; + this.payload = $.payload; + this.profile = $.profile; + this.url = $.url; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(XmattersNotificationState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private XmattersNotificationState $; + + public Builder() { + $ = new XmattersNotificationState(); + } + + public Builder(XmattersNotificationState defaults) { + $ = new XmattersNotificationState(Objects.requireNonNull(defaults)); + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(@Nullable Output active) { + $.active = active; + return this; + } + + /** + * @param active The configuration is enabled (`true`) or disabled (`false`) + * + * @return builder + * + */ + public Builder active(Boolean active) { + return active(Output.of(active)); + } + + /** + * @param headers A list of the additional HTTP headers + * + * @return builder + * + */ + public Builder headers(@Nullable Output headers) { + $.headers = headers; + return this; + } + + /** + * @param headers A list of the additional HTTP headers + * + * @return builder + * + */ + public Builder headers(XmattersNotificationHeadersArgs headers) { + return headers(Output.of(headers)); + } + + /** + * @param insecure Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + * @return builder + * + */ + public Builder insecure(@Nullable Output insecure) { + $.insecure = insecure; + return this; + } + + /** + * @param insecure Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + * + * @return builder + * + */ + public Builder insecure(Boolean insecure) { + return insecure(Output.of(insecure)); + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the notification configuration + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param payload The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder payload(@Nullable Output payload) { + $.payload = payload; + return this; + } + + /** + * @param payload The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + * + * @return builder + * + */ + public Builder payload(String payload) { + return payload(Output.of(payload)); + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(@Nullable Output profile) { + $.profile = profile; + return this; + } + + /** + * @param profile The ID of the associated alerting profile + * + * @return builder + * + */ + public Builder profile(String profile) { + return profile(Output.of(profile)); + } + + /** + * @param url The URL of the WebHook endpoint + * + * @return builder + * + */ + public Builder url(@Nullable Output url) { + $.url = url; + return this; + } + + /** + * @param url The URL of the WebHook endpoint + * + * @return builder + * + */ + public Builder url(String url) { + return url(Output.of(url)); + } + + public XmattersNotificationState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/AutotagEntitySelectorBasedRule.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/AutotagEntitySelectorBasedRule.java index eba526b0..8f9c354b 100644 --- a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/AutotagEntitySelectorBasedRule.java +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/AutotagEntitySelectorBasedRule.java @@ -13,6 +13,7 @@ @CustomType public final class AutotagEntitySelectorBasedRule { private @Nullable Boolean enabled; + private @Nullable String normalization; private @Nullable String selector; private @Nullable String unknowns; private @Nullable String valueFormat; @@ -21,6 +22,9 @@ private AutotagEntitySelectorBasedRule() {} public Optional enabled() { return Optional.ofNullable(this.enabled); } + public Optional normalization() { + return Optional.ofNullable(this.normalization); + } public Optional selector() { return Optional.ofNullable(this.selector); } @@ -41,6 +45,7 @@ public static Builder builder(AutotagEntitySelectorBasedRule defaults) { @CustomType.Builder public static final class Builder { private @Nullable Boolean enabled; + private @Nullable String normalization; private @Nullable String selector; private @Nullable String unknowns; private @Nullable String valueFormat; @@ -48,6 +53,7 @@ public Builder() {} public Builder(AutotagEntitySelectorBasedRule defaults) { Objects.requireNonNull(defaults); this.enabled = defaults.enabled; + this.normalization = defaults.normalization; this.selector = defaults.selector; this.unknowns = defaults.unknowns; this.valueFormat = defaults.valueFormat; @@ -59,6 +65,11 @@ public Builder enabled(@Nullable Boolean enabled) { return this; } @CustomType.Setter + public Builder normalization(@Nullable String normalization) { + this.normalization = normalization; + return this; + } + @CustomType.Setter public Builder selector(@Nullable String selector) { this.selector = selector; return this; @@ -76,6 +87,7 @@ public Builder valueFormat(@Nullable String valueFormat) { public AutotagEntitySelectorBasedRule build() { final var o = new AutotagEntitySelectorBasedRule(); o.enabled = enabled; + o.normalization = normalization; o.selector = selector; o.unknowns = unknowns; o.valueFormat = valueFormat; diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/DashboardDashboardMetadata.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/DashboardDashboardMetadata.java index 749a9c74..d70f20dd 100644 --- a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/DashboardDashboardMetadata.java +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/DashboardDashboardMetadata.java @@ -41,6 +41,11 @@ public final class DashboardDashboardMetadata { * */ private String owner; + /** + * @return the dashboard is a preset (`true`) or not (`false`). Default is `false`. + * + */ + private @Nullable Boolean preset; /** * @return the dashboard is shared (`true`) or private (`false`) * @@ -103,6 +108,13 @@ public String name() { public String owner() { return this.owner; } + /** + * @return the dashboard is a preset (`true`) or not (`false`). Default is `false`. + * + */ + public Optional preset() { + return Optional.ofNullable(this.preset); + } /** * @return the dashboard is shared (`true`) or private (`false`) * @@ -153,6 +165,7 @@ public static final class Builder { private @Nullable DashboardDashboardMetadataFilter filter; private String name; private String owner; + private @Nullable Boolean preset; private @Nullable Boolean shared; private @Nullable DashboardDashboardMetadataSharingDetails sharingDetails; private @Nullable List tags; @@ -166,6 +179,7 @@ public Builder(DashboardDashboardMetadata defaults) { this.filter = defaults.filter; this.name = defaults.name; this.owner = defaults.owner; + this.preset = defaults.preset; this.shared = defaults.shared; this.sharingDetails = defaults.sharingDetails; this.tags = defaults.tags; @@ -199,6 +213,11 @@ public Builder owner(String owner) { return this; } @CustomType.Setter + public Builder preset(@Nullable Boolean preset) { + this.preset = preset; + return this; + } + @CustomType.Setter public Builder shared(@Nullable Boolean shared) { this.shared = shared; return this; @@ -236,6 +255,7 @@ public DashboardDashboardMetadata build() { o.filter = filter; o.name = name; o.owner = owner; + o.preset = preset; o.shared = shared; o.sharingDetails = sharingDetails; o.tags = tags; diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/GetAlertingProfileResult.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/GetAlertingProfileResult.java new file mode 100644 index 00000000..148ae142 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/GetAlertingProfileResult.java @@ -0,0 +1,66 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetAlertingProfileResult { + /** + * @return The provider-assigned unique ID for this managed resource. + * + */ + private String id; + private String name; + + private GetAlertingProfileResult() {} + /** + * @return The provider-assigned unique ID for this managed resource. + * + */ + public String id() { + return this.id; + } + public String name() { + return this.name; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetAlertingProfileResult defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String id; + private String name; + public Builder() {} + public Builder(GetAlertingProfileResult defaults) { + Objects.requireNonNull(defaults); + this.id = defaults.id; + this.name = defaults.name; + } + + @CustomType.Setter + public Builder id(String id) { + this.id = Objects.requireNonNull(id); + return this; + } + @CustomType.Setter + public Builder name(String name) { + this.name = Objects.requireNonNull(name); + return this; + } + public GetAlertingProfileResult build() { + final var o = new GetAlertingProfileResult(); + o.id = id; + o.name = name; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/GetCredentialsResult.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/GetCredentialsResult.java index a36bc483..8fcccf71 100644 --- a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/GetCredentialsResult.java +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/GetCredentialsResult.java @@ -5,23 +5,34 @@ import com.pulumi.core.annotations.CustomType; import java.lang.String; -import java.util.Map; import java.util.Objects; +import java.util.Optional; import javax.annotation.Nullable; @CustomType public final class GetCredentialsResult { - private @Nullable Map credentials; /** * @return The provider-assigned unique ID for this managed resource. * */ private String id; + /** + * @return The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + * + */ + private @Nullable String name; + /** + * @return The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + * + */ + private @Nullable String scope; + /** + * @return The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + * + */ + private @Nullable String type; private GetCredentialsResult() {} - public Map credentials() { - return this.credentials == null ? Map.of() : this.credentials; - } /** * @return The provider-assigned unique ID for this managed resource. * @@ -29,6 +40,27 @@ public Map credentials() { public String id() { return this.id; } + /** + * @return The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + * + */ + public Optional name() { + return Optional.ofNullable(this.name); + } + /** + * @return The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + * + */ + public Optional scope() { + return Optional.ofNullable(this.scope); + } + /** + * @return The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + * + */ + public Optional type() { + return Optional.ofNullable(this.type); + } public static Builder builder() { return new Builder(); @@ -39,29 +71,45 @@ public static Builder builder(GetCredentialsResult defaults) { } @CustomType.Builder public static final class Builder { - private @Nullable Map credentials; private String id; + private @Nullable String name; + private @Nullable String scope; + private @Nullable String type; public Builder() {} public Builder(GetCredentialsResult defaults) { Objects.requireNonNull(defaults); - this.credentials = defaults.credentials; this.id = defaults.id; + this.name = defaults.name; + this.scope = defaults.scope; + this.type = defaults.type; } @CustomType.Setter - public Builder credentials(@Nullable Map credentials) { - this.credentials = credentials; + public Builder id(String id) { + this.id = Objects.requireNonNull(id); + return this; + } + @CustomType.Setter + public Builder name(@Nullable String name) { + this.name = name; return this; } @CustomType.Setter - public Builder id(String id) { - this.id = Objects.requireNonNull(id); + public Builder scope(@Nullable String scope) { + this.scope = scope; + return this; + } + @CustomType.Setter + public Builder type(@Nullable String type) { + this.type = type; return this; } public GetCredentialsResult build() { final var o = new GetCredentialsResult(); - o.credentials = credentials; o.id = id; + o.name = name; + o.scope = scope; + o.type = type; return o; } } diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceFilter.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceFilter.java new file mode 100644 index 00000000..0ac43aa8 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceFilter.java @@ -0,0 +1,59 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dynatrace.outputs.MaintenanceFilterFilter; +import java.util.List; +import java.util.Objects; +import javax.annotation.Nullable; + +@CustomType +public final class MaintenanceFilter { + /** + * @return A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies + * + */ + private @Nullable List filters; + + private MaintenanceFilter() {} + /** + * @return A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies + * + */ + public List filters() { + return this.filters == null ? List.of() : this.filters; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(MaintenanceFilter defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable List filters; + public Builder() {} + public Builder(MaintenanceFilter defaults) { + Objects.requireNonNull(defaults); + this.filters = defaults.filters; + } + + @CustomType.Setter + public Builder filters(@Nullable List filters) { + this.filters = filters; + return this; + } + public Builder filters(MaintenanceFilterFilter... filters) { + return filters(List.of(filters)); + } + public MaintenanceFilter build() { + final var o = new MaintenanceFilter(); + o.filters = filters; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceFilterFilter.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceFilterFilter.java new file mode 100644 index 00000000..94413472 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceFilterFilter.java @@ -0,0 +1,91 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class MaintenanceFilterFilter { + private @Nullable String entityId; + private @Nullable List entityTags; + private @Nullable String entityType; + private @Nullable List managementZones; + + private MaintenanceFilterFilter() {} + public Optional entityId() { + return Optional.ofNullable(this.entityId); + } + public List entityTags() { + return this.entityTags == null ? List.of() : this.entityTags; + } + public Optional entityType() { + return Optional.ofNullable(this.entityType); + } + public List managementZones() { + return this.managementZones == null ? List.of() : this.managementZones; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(MaintenanceFilterFilter defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String entityId; + private @Nullable List entityTags; + private @Nullable String entityType; + private @Nullable List managementZones; + public Builder() {} + public Builder(MaintenanceFilterFilter defaults) { + Objects.requireNonNull(defaults); + this.entityId = defaults.entityId; + this.entityTags = defaults.entityTags; + this.entityType = defaults.entityType; + this.managementZones = defaults.managementZones; + } + + @CustomType.Setter + public Builder entityId(@Nullable String entityId) { + this.entityId = entityId; + return this; + } + @CustomType.Setter + public Builder entityTags(@Nullable List entityTags) { + this.entityTags = entityTags; + return this; + } + public Builder entityTags(String... entityTags) { + return entityTags(List.of(entityTags)); + } + @CustomType.Setter + public Builder entityType(@Nullable String entityType) { + this.entityType = entityType; + return this; + } + @CustomType.Setter + public Builder managementZones(@Nullable List managementZones) { + this.managementZones = managementZones; + return this; + } + public Builder managementZones(String... managementZones) { + return managementZones(List.of(managementZones)); + } + public MaintenanceFilterFilter build() { + final var o = new MaintenanceFilterFilter(); + o.entityId = entityId; + o.entityTags = entityTags; + o.entityType = entityType; + o.managementZones = managementZones; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceGeneralProperties.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceGeneralProperties.java new file mode 100644 index 00000000..79363e06 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceGeneralProperties.java @@ -0,0 +1,137 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class MaintenanceGeneralProperties { + /** + * @return A short description of the maintenance purpose + * + */ + private @Nullable String description; + /** + * @return Suppress execution of synthetic monitors during the maintenance + * + */ + private @Nullable Boolean disableSynthetic; + /** + * @return The name of the maintenance window, displayed in the UI + * + */ + private String name; + /** + * @return The type of suppression of alerting and problem detection during the maintenance + * + */ + private String suppression; + /** + * @return The type of the maintenance: planned or unplanned + * + */ + private String type; + + private MaintenanceGeneralProperties() {} + /** + * @return A short description of the maintenance purpose + * + */ + public Optional description() { + return Optional.ofNullable(this.description); + } + /** + * @return Suppress execution of synthetic monitors during the maintenance + * + */ + public Optional disableSynthetic() { + return Optional.ofNullable(this.disableSynthetic); + } + /** + * @return The name of the maintenance window, displayed in the UI + * + */ + public String name() { + return this.name; + } + /** + * @return The type of suppression of alerting and problem detection during the maintenance + * + */ + public String suppression() { + return this.suppression; + } + /** + * @return The type of the maintenance: planned or unplanned + * + */ + public String type() { + return this.type; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(MaintenanceGeneralProperties defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String description; + private @Nullable Boolean disableSynthetic; + private String name; + private String suppression; + private String type; + public Builder() {} + public Builder(MaintenanceGeneralProperties defaults) { + Objects.requireNonNull(defaults); + this.description = defaults.description; + this.disableSynthetic = defaults.disableSynthetic; + this.name = defaults.name; + this.suppression = defaults.suppression; + this.type = defaults.type; + } + + @CustomType.Setter + public Builder description(@Nullable String description) { + this.description = description; + return this; + } + @CustomType.Setter + public Builder disableSynthetic(@Nullable Boolean disableSynthetic) { + this.disableSynthetic = disableSynthetic; + return this; + } + @CustomType.Setter + public Builder name(String name) { + this.name = Objects.requireNonNull(name); + return this; + } + @CustomType.Setter + public Builder suppression(String suppression) { + this.suppression = Objects.requireNonNull(suppression); + return this; + } + @CustomType.Setter + public Builder type(String type) { + this.type = Objects.requireNonNull(type); + return this; + } + public MaintenanceGeneralProperties build() { + final var o = new MaintenanceGeneralProperties(); + o.description = description; + o.disableSynthetic = disableSynthetic; + o.name = name; + o.suppression = suppression; + o.type = type; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceSchedule.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceSchedule.java new file mode 100644 index 00000000..36007a0b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceSchedule.java @@ -0,0 +1,140 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dynatrace.outputs.MaintenanceScheduleDailyRecurrence; +import com.pulumi.dynatrace.outputs.MaintenanceScheduleMonthlyRecurrence; +import com.pulumi.dynatrace.outputs.MaintenanceScheduleOnceRecurrence; +import com.pulumi.dynatrace.outputs.MaintenanceScheduleWeeklyRecurrence; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class MaintenanceSchedule { + /** + * @return The configuration for maintenance windows occuring daily + * + */ + private @Nullable MaintenanceScheduleDailyRecurrence dailyRecurrence; + /** + * @return The configuration for maintenance windows occuring monthly + * + */ + private @Nullable MaintenanceScheduleMonthlyRecurrence monthlyRecurrence; + /** + * @return The configuration for maintenance windows occuring once + * + */ + private @Nullable MaintenanceScheduleOnceRecurrence onceRecurrence; + /** + * @return The time window of the maintenance window + * + */ + private String type; + /** + * @return The configuration for maintenance windows occuring weekly + * + */ + private @Nullable MaintenanceScheduleWeeklyRecurrence weeklyRecurrence; + + private MaintenanceSchedule() {} + /** + * @return The configuration for maintenance windows occuring daily + * + */ + public Optional dailyRecurrence() { + return Optional.ofNullable(this.dailyRecurrence); + } + /** + * @return The configuration for maintenance windows occuring monthly + * + */ + public Optional monthlyRecurrence() { + return Optional.ofNullable(this.monthlyRecurrence); + } + /** + * @return The configuration for maintenance windows occuring once + * + */ + public Optional onceRecurrence() { + return Optional.ofNullable(this.onceRecurrence); + } + /** + * @return The time window of the maintenance window + * + */ + public String type() { + return this.type; + } + /** + * @return The configuration for maintenance windows occuring weekly + * + */ + public Optional weeklyRecurrence() { + return Optional.ofNullable(this.weeklyRecurrence); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(MaintenanceSchedule defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable MaintenanceScheduleDailyRecurrence dailyRecurrence; + private @Nullable MaintenanceScheduleMonthlyRecurrence monthlyRecurrence; + private @Nullable MaintenanceScheduleOnceRecurrence onceRecurrence; + private String type; + private @Nullable MaintenanceScheduleWeeklyRecurrence weeklyRecurrence; + public Builder() {} + public Builder(MaintenanceSchedule defaults) { + Objects.requireNonNull(defaults); + this.dailyRecurrence = defaults.dailyRecurrence; + this.monthlyRecurrence = defaults.monthlyRecurrence; + this.onceRecurrence = defaults.onceRecurrence; + this.type = defaults.type; + this.weeklyRecurrence = defaults.weeklyRecurrence; + } + + @CustomType.Setter + public Builder dailyRecurrence(@Nullable MaintenanceScheduleDailyRecurrence dailyRecurrence) { + this.dailyRecurrence = dailyRecurrence; + return this; + } + @CustomType.Setter + public Builder monthlyRecurrence(@Nullable MaintenanceScheduleMonthlyRecurrence monthlyRecurrence) { + this.monthlyRecurrence = monthlyRecurrence; + return this; + } + @CustomType.Setter + public Builder onceRecurrence(@Nullable MaintenanceScheduleOnceRecurrence onceRecurrence) { + this.onceRecurrence = onceRecurrence; + return this; + } + @CustomType.Setter + public Builder type(String type) { + this.type = Objects.requireNonNull(type); + return this; + } + @CustomType.Setter + public Builder weeklyRecurrence(@Nullable MaintenanceScheduleWeeklyRecurrence weeklyRecurrence) { + this.weeklyRecurrence = weeklyRecurrence; + return this; + } + public MaintenanceSchedule build() { + final var o = new MaintenanceSchedule(); + o.dailyRecurrence = dailyRecurrence; + o.monthlyRecurrence = monthlyRecurrence; + o.onceRecurrence = onceRecurrence; + o.type = type; + o.weeklyRecurrence = weeklyRecurrence; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrence.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrence.java new file mode 100644 index 00000000..d8677daf --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrence.java @@ -0,0 +1,59 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dynatrace.outputs.MaintenanceScheduleDailyRecurrenceRecurrenceRange; +import com.pulumi.dynatrace.outputs.MaintenanceScheduleDailyRecurrenceTimeWindow; +import java.util.Objects; + +@CustomType +public final class MaintenanceScheduleDailyRecurrence { + private MaintenanceScheduleDailyRecurrenceRecurrenceRange recurrenceRange; + private MaintenanceScheduleDailyRecurrenceTimeWindow timeWindow; + + private MaintenanceScheduleDailyRecurrence() {} + public MaintenanceScheduleDailyRecurrenceRecurrenceRange recurrenceRange() { + return this.recurrenceRange; + } + public MaintenanceScheduleDailyRecurrenceTimeWindow timeWindow() { + return this.timeWindow; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(MaintenanceScheduleDailyRecurrence defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private MaintenanceScheduleDailyRecurrenceRecurrenceRange recurrenceRange; + private MaintenanceScheduleDailyRecurrenceTimeWindow timeWindow; + public Builder() {} + public Builder(MaintenanceScheduleDailyRecurrence defaults) { + Objects.requireNonNull(defaults); + this.recurrenceRange = defaults.recurrenceRange; + this.timeWindow = defaults.timeWindow; + } + + @CustomType.Setter + public Builder recurrenceRange(MaintenanceScheduleDailyRecurrenceRecurrenceRange recurrenceRange) { + this.recurrenceRange = Objects.requireNonNull(recurrenceRange); + return this; + } + @CustomType.Setter + public Builder timeWindow(MaintenanceScheduleDailyRecurrenceTimeWindow timeWindow) { + this.timeWindow = Objects.requireNonNull(timeWindow); + return this; + } + public MaintenanceScheduleDailyRecurrence build() { + final var o = new MaintenanceScheduleDailyRecurrence(); + o.recurrenceRange = recurrenceRange; + o.timeWindow = timeWindow; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrenceRecurrenceRange.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrenceRecurrenceRange.java new file mode 100644 index 00000000..5ee94b7e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrenceRecurrenceRange.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class MaintenanceScheduleDailyRecurrenceRecurrenceRange { + private String endDate; + private String startDate; + + private MaintenanceScheduleDailyRecurrenceRecurrenceRange() {} + public String endDate() { + return this.endDate; + } + public String startDate() { + return this.startDate; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(MaintenanceScheduleDailyRecurrenceRecurrenceRange defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String endDate; + private String startDate; + public Builder() {} + public Builder(MaintenanceScheduleDailyRecurrenceRecurrenceRange defaults) { + Objects.requireNonNull(defaults); + this.endDate = defaults.endDate; + this.startDate = defaults.startDate; + } + + @CustomType.Setter + public Builder endDate(String endDate) { + this.endDate = Objects.requireNonNull(endDate); + return this; + } + @CustomType.Setter + public Builder startDate(String startDate) { + this.startDate = Objects.requireNonNull(startDate); + return this; + } + public MaintenanceScheduleDailyRecurrenceRecurrenceRange build() { + final var o = new MaintenanceScheduleDailyRecurrenceRecurrenceRange(); + o.endDate = endDate; + o.startDate = startDate; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrenceTimeWindow.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrenceTimeWindow.java new file mode 100644 index 00000000..b8ae1bd4 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleDailyRecurrenceTimeWindow.java @@ -0,0 +1,70 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class MaintenanceScheduleDailyRecurrenceTimeWindow { + private String endTime; + private String startTime; + private String timeZone; + + private MaintenanceScheduleDailyRecurrenceTimeWindow() {} + public String endTime() { + return this.endTime; + } + public String startTime() { + return this.startTime; + } + public String timeZone() { + return this.timeZone; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(MaintenanceScheduleDailyRecurrenceTimeWindow defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String endTime; + private String startTime; + private String timeZone; + public Builder() {} + public Builder(MaintenanceScheduleDailyRecurrenceTimeWindow defaults) { + Objects.requireNonNull(defaults); + this.endTime = defaults.endTime; + this.startTime = defaults.startTime; + this.timeZone = defaults.timeZone; + } + + @CustomType.Setter + public Builder endTime(String endTime) { + this.endTime = Objects.requireNonNull(endTime); + return this; + } + @CustomType.Setter + public Builder startTime(String startTime) { + this.startTime = Objects.requireNonNull(startTime); + return this; + } + @CustomType.Setter + public Builder timeZone(String timeZone) { + this.timeZone = Objects.requireNonNull(timeZone); + return this; + } + public MaintenanceScheduleDailyRecurrenceTimeWindow build() { + final var o = new MaintenanceScheduleDailyRecurrenceTimeWindow(); + o.endTime = endTime; + o.startTime = startTime; + o.timeZone = timeZone; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrence.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrence.java new file mode 100644 index 00000000..bc54153b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrence.java @@ -0,0 +1,72 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dynatrace.outputs.MaintenanceScheduleMonthlyRecurrenceRecurrenceRange; +import com.pulumi.dynatrace.outputs.MaintenanceScheduleMonthlyRecurrenceTimeWindow; +import java.lang.Integer; +import java.util.Objects; + +@CustomType +public final class MaintenanceScheduleMonthlyRecurrence { + private Integer dayOfMonth; + private MaintenanceScheduleMonthlyRecurrenceRecurrenceRange recurrenceRange; + private MaintenanceScheduleMonthlyRecurrenceTimeWindow timeWindow; + + private MaintenanceScheduleMonthlyRecurrence() {} + public Integer dayOfMonth() { + return this.dayOfMonth; + } + public MaintenanceScheduleMonthlyRecurrenceRecurrenceRange recurrenceRange() { + return this.recurrenceRange; + } + public MaintenanceScheduleMonthlyRecurrenceTimeWindow timeWindow() { + return this.timeWindow; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(MaintenanceScheduleMonthlyRecurrence defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private Integer dayOfMonth; + private MaintenanceScheduleMonthlyRecurrenceRecurrenceRange recurrenceRange; + private MaintenanceScheduleMonthlyRecurrenceTimeWindow timeWindow; + public Builder() {} + public Builder(MaintenanceScheduleMonthlyRecurrence defaults) { + Objects.requireNonNull(defaults); + this.dayOfMonth = defaults.dayOfMonth; + this.recurrenceRange = defaults.recurrenceRange; + this.timeWindow = defaults.timeWindow; + } + + @CustomType.Setter + public Builder dayOfMonth(Integer dayOfMonth) { + this.dayOfMonth = Objects.requireNonNull(dayOfMonth); + return this; + } + @CustomType.Setter + public Builder recurrenceRange(MaintenanceScheduleMonthlyRecurrenceRecurrenceRange recurrenceRange) { + this.recurrenceRange = Objects.requireNonNull(recurrenceRange); + return this; + } + @CustomType.Setter + public Builder timeWindow(MaintenanceScheduleMonthlyRecurrenceTimeWindow timeWindow) { + this.timeWindow = Objects.requireNonNull(timeWindow); + return this; + } + public MaintenanceScheduleMonthlyRecurrence build() { + final var o = new MaintenanceScheduleMonthlyRecurrence(); + o.dayOfMonth = dayOfMonth; + o.recurrenceRange = recurrenceRange; + o.timeWindow = timeWindow; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRange.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRange.java new file mode 100644 index 00000000..237a7511 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrenceRecurrenceRange.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class MaintenanceScheduleMonthlyRecurrenceRecurrenceRange { + private String endDate; + private String startDate; + + private MaintenanceScheduleMonthlyRecurrenceRecurrenceRange() {} + public String endDate() { + return this.endDate; + } + public String startDate() { + return this.startDate; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(MaintenanceScheduleMonthlyRecurrenceRecurrenceRange defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String endDate; + private String startDate; + public Builder() {} + public Builder(MaintenanceScheduleMonthlyRecurrenceRecurrenceRange defaults) { + Objects.requireNonNull(defaults); + this.endDate = defaults.endDate; + this.startDate = defaults.startDate; + } + + @CustomType.Setter + public Builder endDate(String endDate) { + this.endDate = Objects.requireNonNull(endDate); + return this; + } + @CustomType.Setter + public Builder startDate(String startDate) { + this.startDate = Objects.requireNonNull(startDate); + return this; + } + public MaintenanceScheduleMonthlyRecurrenceRecurrenceRange build() { + final var o = new MaintenanceScheduleMonthlyRecurrenceRecurrenceRange(); + o.endDate = endDate; + o.startDate = startDate; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrenceTimeWindow.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrenceTimeWindow.java new file mode 100644 index 00000000..92b1bcf5 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleMonthlyRecurrenceTimeWindow.java @@ -0,0 +1,70 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class MaintenanceScheduleMonthlyRecurrenceTimeWindow { + private String endTime; + private String startTime; + private String timeZone; + + private MaintenanceScheduleMonthlyRecurrenceTimeWindow() {} + public String endTime() { + return this.endTime; + } + public String startTime() { + return this.startTime; + } + public String timeZone() { + return this.timeZone; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(MaintenanceScheduleMonthlyRecurrenceTimeWindow defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String endTime; + private String startTime; + private String timeZone; + public Builder() {} + public Builder(MaintenanceScheduleMonthlyRecurrenceTimeWindow defaults) { + Objects.requireNonNull(defaults); + this.endTime = defaults.endTime; + this.startTime = defaults.startTime; + this.timeZone = defaults.timeZone; + } + + @CustomType.Setter + public Builder endTime(String endTime) { + this.endTime = Objects.requireNonNull(endTime); + return this; + } + @CustomType.Setter + public Builder startTime(String startTime) { + this.startTime = Objects.requireNonNull(startTime); + return this; + } + @CustomType.Setter + public Builder timeZone(String timeZone) { + this.timeZone = Objects.requireNonNull(timeZone); + return this; + } + public MaintenanceScheduleMonthlyRecurrenceTimeWindow build() { + final var o = new MaintenanceScheduleMonthlyRecurrenceTimeWindow(); + o.endTime = endTime; + o.startTime = startTime; + o.timeZone = timeZone; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleOnceRecurrence.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleOnceRecurrence.java new file mode 100644 index 00000000..8369fe10 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleOnceRecurrence.java @@ -0,0 +1,70 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class MaintenanceScheduleOnceRecurrence { + private String endTime; + private String startTime; + private String timeZone; + + private MaintenanceScheduleOnceRecurrence() {} + public String endTime() { + return this.endTime; + } + public String startTime() { + return this.startTime; + } + public String timeZone() { + return this.timeZone; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(MaintenanceScheduleOnceRecurrence defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String endTime; + private String startTime; + private String timeZone; + public Builder() {} + public Builder(MaintenanceScheduleOnceRecurrence defaults) { + Objects.requireNonNull(defaults); + this.endTime = defaults.endTime; + this.startTime = defaults.startTime; + this.timeZone = defaults.timeZone; + } + + @CustomType.Setter + public Builder endTime(String endTime) { + this.endTime = Objects.requireNonNull(endTime); + return this; + } + @CustomType.Setter + public Builder startTime(String startTime) { + this.startTime = Objects.requireNonNull(startTime); + return this; + } + @CustomType.Setter + public Builder timeZone(String timeZone) { + this.timeZone = Objects.requireNonNull(timeZone); + return this; + } + public MaintenanceScheduleOnceRecurrence build() { + final var o = new MaintenanceScheduleOnceRecurrence(); + o.endTime = endTime; + o.startTime = startTime; + o.timeZone = timeZone; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrence.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrence.java new file mode 100644 index 00000000..04e66953 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrence.java @@ -0,0 +1,72 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dynatrace.outputs.MaintenanceScheduleWeeklyRecurrenceRecurrenceRange; +import com.pulumi.dynatrace.outputs.MaintenanceScheduleWeeklyRecurrenceTimeWindow; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class MaintenanceScheduleWeeklyRecurrence { + private String dayOfWeek; + private MaintenanceScheduleWeeklyRecurrenceRecurrenceRange recurrenceRange; + private MaintenanceScheduleWeeklyRecurrenceTimeWindow timeWindow; + + private MaintenanceScheduleWeeklyRecurrence() {} + public String dayOfWeek() { + return this.dayOfWeek; + } + public MaintenanceScheduleWeeklyRecurrenceRecurrenceRange recurrenceRange() { + return this.recurrenceRange; + } + public MaintenanceScheduleWeeklyRecurrenceTimeWindow timeWindow() { + return this.timeWindow; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(MaintenanceScheduleWeeklyRecurrence defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String dayOfWeek; + private MaintenanceScheduleWeeklyRecurrenceRecurrenceRange recurrenceRange; + private MaintenanceScheduleWeeklyRecurrenceTimeWindow timeWindow; + public Builder() {} + public Builder(MaintenanceScheduleWeeklyRecurrence defaults) { + Objects.requireNonNull(defaults); + this.dayOfWeek = defaults.dayOfWeek; + this.recurrenceRange = defaults.recurrenceRange; + this.timeWindow = defaults.timeWindow; + } + + @CustomType.Setter + public Builder dayOfWeek(String dayOfWeek) { + this.dayOfWeek = Objects.requireNonNull(dayOfWeek); + return this; + } + @CustomType.Setter + public Builder recurrenceRange(MaintenanceScheduleWeeklyRecurrenceRecurrenceRange recurrenceRange) { + this.recurrenceRange = Objects.requireNonNull(recurrenceRange); + return this; + } + @CustomType.Setter + public Builder timeWindow(MaintenanceScheduleWeeklyRecurrenceTimeWindow timeWindow) { + this.timeWindow = Objects.requireNonNull(timeWindow); + return this; + } + public MaintenanceScheduleWeeklyRecurrence build() { + final var o = new MaintenanceScheduleWeeklyRecurrence(); + o.dayOfWeek = dayOfWeek; + o.recurrenceRange = recurrenceRange; + o.timeWindow = timeWindow; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRange.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRange.java new file mode 100644 index 00000000..3b443da3 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrenceRecurrenceRange.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class MaintenanceScheduleWeeklyRecurrenceRecurrenceRange { + private String endDate; + private String startDate; + + private MaintenanceScheduleWeeklyRecurrenceRecurrenceRange() {} + public String endDate() { + return this.endDate; + } + public String startDate() { + return this.startDate; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(MaintenanceScheduleWeeklyRecurrenceRecurrenceRange defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String endDate; + private String startDate; + public Builder() {} + public Builder(MaintenanceScheduleWeeklyRecurrenceRecurrenceRange defaults) { + Objects.requireNonNull(defaults); + this.endDate = defaults.endDate; + this.startDate = defaults.startDate; + } + + @CustomType.Setter + public Builder endDate(String endDate) { + this.endDate = Objects.requireNonNull(endDate); + return this; + } + @CustomType.Setter + public Builder startDate(String startDate) { + this.startDate = Objects.requireNonNull(startDate); + return this; + } + public MaintenanceScheduleWeeklyRecurrenceRecurrenceRange build() { + final var o = new MaintenanceScheduleWeeklyRecurrenceRecurrenceRange(); + o.endDate = endDate; + o.startDate = startDate; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrenceTimeWindow.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrenceTimeWindow.java new file mode 100644 index 00000000..faaed16f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/MaintenanceScheduleWeeklyRecurrenceTimeWindow.java @@ -0,0 +1,70 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class MaintenanceScheduleWeeklyRecurrenceTimeWindow { + private String endTime; + private String startTime; + private String timeZone; + + private MaintenanceScheduleWeeklyRecurrenceTimeWindow() {} + public String endTime() { + return this.endTime; + } + public String startTime() { + return this.startTime; + } + public String timeZone() { + return this.timeZone; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(MaintenanceScheduleWeeklyRecurrenceTimeWindow defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String endTime; + private String startTime; + private String timeZone; + public Builder() {} + public Builder(MaintenanceScheduleWeeklyRecurrenceTimeWindow defaults) { + Objects.requireNonNull(defaults); + this.endTime = defaults.endTime; + this.startTime = defaults.startTime; + this.timeZone = defaults.timeZone; + } + + @CustomType.Setter + public Builder endTime(String endTime) { + this.endTime = Objects.requireNonNull(endTime); + return this; + } + @CustomType.Setter + public Builder startTime(String startTime) { + this.startTime = Objects.requireNonNull(startTime); + return this; + } + @CustomType.Setter + public Builder timeZone(String timeZone) { + this.timeZone = Objects.requireNonNull(timeZone); + return this; + } + public MaintenanceScheduleWeeklyRecurrenceTimeWindow build() { + final var o = new MaintenanceScheduleWeeklyRecurrenceTimeWindow(); + o.endTime = endTime; + o.startTime = startTime; + o.timeZone = timeZone; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/WebhookNotificationHeaders.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/WebhookNotificationHeaders.java new file mode 100644 index 00000000..7de61a0e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/WebhookNotificationHeaders.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dynatrace.outputs.WebhookNotificationHeadersHeader; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class WebhookNotificationHeaders { + /** + * @return An additional HTTP Header to include when sending requests + * + */ + private List headers; + + private WebhookNotificationHeaders() {} + /** + * @return An additional HTTP Header to include when sending requests + * + */ + public List headers() { + return this.headers; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(WebhookNotificationHeaders defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private List headers; + public Builder() {} + public Builder(WebhookNotificationHeaders defaults) { + Objects.requireNonNull(defaults); + this.headers = defaults.headers; + } + + @CustomType.Setter + public Builder headers(List headers) { + this.headers = Objects.requireNonNull(headers); + return this; + } + public Builder headers(WebhookNotificationHeadersHeader... headers) { + return headers(List.of(headers)); + } + public WebhookNotificationHeaders build() { + final var o = new WebhookNotificationHeaders(); + o.headers = headers; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/WebhookNotificationHeadersHeader.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/WebhookNotificationHeadersHeader.java new file mode 100644 index 00000000..85910bc7 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/WebhookNotificationHeadersHeader.java @@ -0,0 +1,80 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class WebhookNotificationHeadersHeader { + /** + * @return The name of the notification configuration + * + */ + private String name; + private @Nullable String secretValue; + private @Nullable String value; + + private WebhookNotificationHeadersHeader() {} + /** + * @return The name of the notification configuration + * + */ + public String name() { + return this.name; + } + public Optional secretValue() { + return Optional.ofNullable(this.secretValue); + } + public Optional value() { + return Optional.ofNullable(this.value); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(WebhookNotificationHeadersHeader defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String name; + private @Nullable String secretValue; + private @Nullable String value; + public Builder() {} + public Builder(WebhookNotificationHeadersHeader defaults) { + Objects.requireNonNull(defaults); + this.name = defaults.name; + this.secretValue = defaults.secretValue; + this.value = defaults.value; + } + + @CustomType.Setter + public Builder name(String name) { + this.name = Objects.requireNonNull(name); + return this; + } + @CustomType.Setter + public Builder secretValue(@Nullable String secretValue) { + this.secretValue = secretValue; + return this; + } + @CustomType.Setter + public Builder value(@Nullable String value) { + this.value = value; + return this; + } + public WebhookNotificationHeadersHeader build() { + final var o = new WebhookNotificationHeadersHeader(); + o.name = name; + o.secretValue = secretValue; + o.value = value; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/XmattersNotificationHeaders.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/XmattersNotificationHeaders.java new file mode 100644 index 00000000..ce4e1637 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/XmattersNotificationHeaders.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.dynatrace.outputs.XmattersNotificationHeadersHeader; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class XmattersNotificationHeaders { + /** + * @return An additional HTTP Header to include when sending requests + * + */ + private List headers; + + private XmattersNotificationHeaders() {} + /** + * @return An additional HTTP Header to include when sending requests + * + */ + public List headers() { + return this.headers; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(XmattersNotificationHeaders defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private List headers; + public Builder() {} + public Builder(XmattersNotificationHeaders defaults) { + Objects.requireNonNull(defaults); + this.headers = defaults.headers; + } + + @CustomType.Setter + public Builder headers(List headers) { + this.headers = Objects.requireNonNull(headers); + return this; + } + public Builder headers(XmattersNotificationHeadersHeader... headers) { + return headers(List.of(headers)); + } + public XmattersNotificationHeaders build() { + final var o = new XmattersNotificationHeaders(); + o.headers = headers; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/XmattersNotificationHeadersHeader.java b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/XmattersNotificationHeadersHeader.java new file mode 100644 index 00000000..1edd9911 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/dynatrace/outputs/XmattersNotificationHeadersHeader.java @@ -0,0 +1,80 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.dynatrace.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class XmattersNotificationHeadersHeader { + /** + * @return The name of the notification configuration + * + */ + private String name; + private @Nullable String secretValue; + private @Nullable String value; + + private XmattersNotificationHeadersHeader() {} + /** + * @return The name of the notification configuration + * + */ + public String name() { + return this.name; + } + public Optional secretValue() { + return Optional.ofNullable(this.secretValue); + } + public Optional value() { + return Optional.ofNullable(this.value); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(XmattersNotificationHeadersHeader defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String name; + private @Nullable String secretValue; + private @Nullable String value; + public Builder() {} + public Builder(XmattersNotificationHeadersHeader defaults) { + Objects.requireNonNull(defaults); + this.name = defaults.name; + this.secretValue = defaults.secretValue; + this.value = defaults.value; + } + + @CustomType.Setter + public Builder name(String name) { + this.name = Objects.requireNonNull(name); + return this; + } + @CustomType.Setter + public Builder secretValue(@Nullable String secretValue) { + this.secretValue = secretValue; + return this; + } + @CustomType.Setter + public Builder value(@Nullable String value) { + this.value = value; + return this; + } + public XmattersNotificationHeadersHeader build() { + final var o = new XmattersNotificationHeadersHeader(); + o.name = name; + o.secretValue = secretValue; + o.value = value; + return o; + } + } +} diff --git a/sdk/nodejs/ansibleTowerNotification.ts b/sdk/nodejs/ansibleTowerNotification.ts new file mode 100644 index 00000000..c15c30e0 --- /dev/null +++ b/sdk/nodejs/ansibleTowerNotification.ts @@ -0,0 +1,193 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +export class AnsibleTowerNotification extends pulumi.CustomResource { + /** + * Get an existing AnsibleTowerNotification resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: AnsibleTowerNotificationState, opts?: pulumi.CustomResourceOptions): AnsibleTowerNotification { + return new AnsibleTowerNotification(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dynatrace:index/ansibleTowerNotification:AnsibleTowerNotification'; + + /** + * Returns true if the given object is an instance of AnsibleTowerNotification. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is AnsibleTowerNotification { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === AnsibleTowerNotification.__pulumiType; + } + + /** + * The notification is active (`true`) or inactive (`false`). Default is `false`. + */ + public readonly active!: pulumi.Output; + /** + * The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + public readonly customMessage!: pulumi.Output; + /** + * Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + */ + public readonly insecure!: pulumi.Output; + /** + * The URL of the target Ansible Tower job template + */ + public readonly jobTemplateUrl!: pulumi.Output; + /** + * The display name within the Dynatrace WebUI. + */ + public readonly name!: pulumi.Output; + /** + * The password for the Ansible Tower account + */ + public readonly password!: pulumi.Output; + /** + * The ID of the associated alerting profile. + */ + public readonly profile!: pulumi.Output; + /** + * The username of the Ansible Tower account + */ + public readonly username!: pulumi.Output; + + /** + * Create a AnsibleTowerNotification resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: AnsibleTowerNotificationArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: AnsibleTowerNotificationArgs | AnsibleTowerNotificationState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as AnsibleTowerNotificationState | undefined; + resourceInputs["active"] = state ? state.active : undefined; + resourceInputs["customMessage"] = state ? state.customMessage : undefined; + resourceInputs["insecure"] = state ? state.insecure : undefined; + resourceInputs["jobTemplateUrl"] = state ? state.jobTemplateUrl : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["password"] = state ? state.password : undefined; + resourceInputs["profile"] = state ? state.profile : undefined; + resourceInputs["username"] = state ? state.username : undefined; + } else { + const args = argsOrState as AnsibleTowerNotificationArgs | undefined; + if ((!args || args.customMessage === undefined) && !opts.urn) { + throw new Error("Missing required property 'customMessage'"); + } + if ((!args || args.jobTemplateUrl === undefined) && !opts.urn) { + throw new Error("Missing required property 'jobTemplateUrl'"); + } + if ((!args || args.profile === undefined) && !opts.urn) { + throw new Error("Missing required property 'profile'"); + } + if ((!args || args.username === undefined) && !opts.urn) { + throw new Error("Missing required property 'username'"); + } + resourceInputs["active"] = args ? args.active : undefined; + resourceInputs["customMessage"] = args ? args.customMessage : undefined; + resourceInputs["insecure"] = args ? args.insecure : undefined; + resourceInputs["jobTemplateUrl"] = args ? args.jobTemplateUrl : undefined; + resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["password"] = args?.password ? pulumi.secret(args.password) : undefined; + resourceInputs["profile"] = args ? args.profile : undefined; + resourceInputs["username"] = args ? args.username : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + const secretOpts = { additionalSecretOutputs: ["password"] }; + opts = pulumi.mergeOptions(opts, secretOpts); + super(AnsibleTowerNotification.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering AnsibleTowerNotification resources. + */ +export interface AnsibleTowerNotificationState { + /** + * The notification is active (`true`) or inactive (`false`). Default is `false`. + */ + active?: pulumi.Input; + /** + * The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + customMessage?: pulumi.Input; + /** + * Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + */ + insecure?: pulumi.Input; + /** + * The URL of the target Ansible Tower job template + */ + jobTemplateUrl?: pulumi.Input; + /** + * The display name within the Dynatrace WebUI. + */ + name?: pulumi.Input; + /** + * The password for the Ansible Tower account + */ + password?: pulumi.Input; + /** + * The ID of the associated alerting profile. + */ + profile?: pulumi.Input; + /** + * The username of the Ansible Tower account + */ + username?: pulumi.Input; +} + +/** + * The set of arguments for constructing a AnsibleTowerNotification resource. + */ +export interface AnsibleTowerNotificationArgs { + /** + * The notification is active (`true`) or inactive (`false`). Default is `false`. + */ + active?: pulumi.Input; + /** + * The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + customMessage: pulumi.Input; + /** + * Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + */ + insecure?: pulumi.Input; + /** + * The URL of the target Ansible Tower job template + */ + jobTemplateUrl: pulumi.Input; + /** + * The display name within the Dynatrace WebUI. + */ + name?: pulumi.Input; + /** + * The password for the Ansible Tower account + */ + password?: pulumi.Input; + /** + * The ID of the associated alerting profile. + */ + profile: pulumi.Input; + /** + * The username of the Ansible Tower account + */ + username: pulumi.Input; +} diff --git a/sdk/nodejs/emailNotification.ts b/sdk/nodejs/emailNotification.ts new file mode 100644 index 00000000..d2c2a0c4 --- /dev/null +++ b/sdk/nodejs/emailNotification.ts @@ -0,0 +1,205 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +export class EmailNotification extends pulumi.CustomResource { + /** + * Get an existing EmailNotification resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: EmailNotificationState, opts?: pulumi.CustomResourceOptions): EmailNotification { + return new EmailNotification(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dynatrace:index/emailNotification:EmailNotification'; + + /** + * Returns true if the given object is an instance of EmailNotification. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is EmailNotification { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === EmailNotification.__pulumiType; + } + + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + public readonly active!: pulumi.Output; + /** + * The list of the email BCC-recipients + */ + public readonly bccs!: pulumi.Output; + /** + * The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + public readonly body!: pulumi.Output; + /** + * The list of the email CC-recipients + */ + public readonly ccs!: pulumi.Output; + /** + * The name of the notification configuration + */ + public readonly name!: pulumi.Output; + /** + * Send email if problem is closed + */ + public readonly notifyClosedProblems!: pulumi.Output; + /** + * The ID of the associated alerting profile + */ + public readonly profile!: pulumi.Output; + /** + * The subject of the email notifications + */ + public readonly subject!: pulumi.Output; + /** + * The list of the email recipients + */ + public readonly tos!: pulumi.Output; + + /** + * Create a EmailNotification resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: EmailNotificationArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: EmailNotificationArgs | EmailNotificationState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as EmailNotificationState | undefined; + resourceInputs["active"] = state ? state.active : undefined; + resourceInputs["bccs"] = state ? state.bccs : undefined; + resourceInputs["body"] = state ? state.body : undefined; + resourceInputs["ccs"] = state ? state.ccs : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["notifyClosedProblems"] = state ? state.notifyClosedProblems : undefined; + resourceInputs["profile"] = state ? state.profile : undefined; + resourceInputs["subject"] = state ? state.subject : undefined; + resourceInputs["tos"] = state ? state.tos : undefined; + } else { + const args = argsOrState as EmailNotificationArgs | undefined; + if ((!args || args.body === undefined) && !opts.urn) { + throw new Error("Missing required property 'body'"); + } + if ((!args || args.profile === undefined) && !opts.urn) { + throw new Error("Missing required property 'profile'"); + } + if ((!args || args.subject === undefined) && !opts.urn) { + throw new Error("Missing required property 'subject'"); + } + if ((!args || args.tos === undefined) && !opts.urn) { + throw new Error("Missing required property 'tos'"); + } + resourceInputs["active"] = args ? args.active : undefined; + resourceInputs["bccs"] = args ? args.bccs : undefined; + resourceInputs["body"] = args ? args.body : undefined; + resourceInputs["ccs"] = args ? args.ccs : undefined; + resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["notifyClosedProblems"] = args ? args.notifyClosedProblems : undefined; + resourceInputs["profile"] = args ? args.profile : undefined; + resourceInputs["subject"] = args ? args.subject : undefined; + resourceInputs["tos"] = args ? args.tos : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(EmailNotification.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering EmailNotification resources. + */ +export interface EmailNotificationState { + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active?: pulumi.Input; + /** + * The list of the email BCC-recipients + */ + bccs?: pulumi.Input[]>; + /** + * The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + body?: pulumi.Input; + /** + * The list of the email CC-recipients + */ + ccs?: pulumi.Input[]>; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * Send email if problem is closed + */ + notifyClosedProblems?: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile?: pulumi.Input; + /** + * The subject of the email notifications + */ + subject?: pulumi.Input; + /** + * The list of the email recipients + */ + tos?: pulumi.Input[]>; +} + +/** + * The set of arguments for constructing a EmailNotification resource. + */ +export interface EmailNotificationArgs { + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active?: pulumi.Input; + /** + * The list of the email BCC-recipients + */ + bccs?: pulumi.Input[]>; + /** + * The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + body: pulumi.Input; + /** + * The list of the email CC-recipients + */ + ccs?: pulumi.Input[]>; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * Send email if problem is closed + */ + notifyClosedProblems?: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile: pulumi.Input; + /** + * The subject of the email notifications + */ + subject: pulumi.Input; + /** + * The list of the email recipients + */ + tos: pulumi.Input[]>; +} diff --git a/sdk/nodejs/frequentIssues.ts b/sdk/nodejs/frequentIssues.ts new file mode 100644 index 00000000..aa9d4c8c --- /dev/null +++ b/sdk/nodejs/frequentIssues.ts @@ -0,0 +1,118 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +export class FrequentIssues extends pulumi.CustomResource { + /** + * Get an existing FrequentIssues resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: FrequentIssuesState, opts?: pulumi.CustomResourceOptions): FrequentIssues { + return new FrequentIssues(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dynatrace:index/frequentIssues:FrequentIssues'; + + /** + * Returns true if the given object is an instance of FrequentIssues. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is FrequentIssues { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === FrequentIssues.__pulumiType; + } + + /** + * Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + */ + public readonly detectApps!: pulumi.Output; + /** + * Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + */ + public readonly detectInfra!: pulumi.Output; + /** + * Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + */ + public readonly detectTxn!: pulumi.Output; + + /** + * Create a FrequentIssues resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: FrequentIssuesArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: FrequentIssuesArgs | FrequentIssuesState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as FrequentIssuesState | undefined; + resourceInputs["detectApps"] = state ? state.detectApps : undefined; + resourceInputs["detectInfra"] = state ? state.detectInfra : undefined; + resourceInputs["detectTxn"] = state ? state.detectTxn : undefined; + } else { + const args = argsOrState as FrequentIssuesArgs | undefined; + if ((!args || args.detectApps === undefined) && !opts.urn) { + throw new Error("Missing required property 'detectApps'"); + } + if ((!args || args.detectInfra === undefined) && !opts.urn) { + throw new Error("Missing required property 'detectInfra'"); + } + if ((!args || args.detectTxn === undefined) && !opts.urn) { + throw new Error("Missing required property 'detectTxn'"); + } + resourceInputs["detectApps"] = args ? args.detectApps : undefined; + resourceInputs["detectInfra"] = args ? args.detectInfra : undefined; + resourceInputs["detectTxn"] = args ? args.detectTxn : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(FrequentIssues.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering FrequentIssues resources. + */ +export interface FrequentIssuesState { + /** + * Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + */ + detectApps?: pulumi.Input; + /** + * Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + */ + detectInfra?: pulumi.Input; + /** + * Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + */ + detectTxn?: pulumi.Input; +} + +/** + * The set of arguments for constructing a FrequentIssues resource. + */ +export interface FrequentIssuesArgs { + /** + * Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + */ + detectApps: pulumi.Input; + /** + * Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + */ + detectInfra: pulumi.Input; + /** + * Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + */ + detectTxn: pulumi.Input; +} diff --git a/sdk/nodejs/getAlertingProfile.ts b/sdk/nodejs/getAlertingProfile.ts new file mode 100644 index 00000000..1c8baed9 --- /dev/null +++ b/sdk/nodejs/getAlertingProfile.ts @@ -0,0 +1,70 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +/** + * The Alerting Profile queries for an Alerting Profile that has a specified name. In case multiple Alerting Profiles share the same name the first one found will be used. + * The ID of this Data Resource aligns with the IDs used by the Dynatrace Settings 2.0 API. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as dynatrace from "@lbrlabs/pulumi-dynatrace"; + * import * as dynatrace from "@pulumi/dynatrace"; + * + * const default = dynatrace.getAlertingProfile({ + * name: "Default", + * }); + * const myWebhookNotification = new dynatrace.WebhookNotification("myWebhookNotification", { + * active: false, + * profile: _default.then(_default => _default.id), + * url: "https://webhook.site/40bf4d43-1a50-4ebd-913d-bf50ce7c3a1e", + * insecure: true, + * notifyEventMerges: true, + * notifyClosedProblems: true, + * payload: "web-hook-payload", + * }); + * ``` + */ +export function getAlertingProfile(args: GetAlertingProfileArgs, opts?: pulumi.InvokeOptions): Promise { + if (!opts) { + opts = {} + } + + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + return pulumi.runtime.invoke("dynatrace:index/getAlertingProfile:getAlertingProfile", { + "name": args.name, + }, opts); +} + +/** + * A collection of arguments for invoking getAlertingProfile. + */ +export interface GetAlertingProfileArgs { + name: string; +} + +/** + * A collection of values returned by getAlertingProfile. + */ +export interface GetAlertingProfileResult { + /** + * The provider-assigned unique ID for this managed resource. + */ + readonly id: string; + readonly name: string; +} + +export function getAlertingProfileOutput(args: GetAlertingProfileOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output { + return pulumi.output(args).apply(a => getAlertingProfile(a, opts)) +} + +/** + * A collection of arguments for invoking getAlertingProfile. + */ +export interface GetAlertingProfileOutputArgs { + name: pulumi.Input; +} diff --git a/sdk/nodejs/getCredentials.ts b/sdk/nodejs/getCredentials.ts index d2c3ee16..111dda9f 100644 --- a/sdk/nodejs/getCredentials.ts +++ b/sdk/nodejs/getCredentials.ts @@ -5,7 +5,56 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "./utilities"; /** - * The credentials data source allows retrieval of all credentials. + * The `dynatrace.getCredentials` data source queries for Credentials stored within the Credentials Vault using the properties `name`, `scope` and `type`. At least one of `name`, `scope` or `type` needs to be specified as a non empty value. Combinations of the three properties are also possible. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as dynatrace from "@lbrlabs/pulumi-dynatrace"; + * import * as dynatrace from "@pulumi/dynatrace"; + * + * const creds = dynatrace.getCredentials({ + * name: "Office365 Access Token", + * }); + * const _name_ = new dynatrace.HttpMonitor("#name#", { + * enabled: true, + * frequency: 60, + * locations: ["SYNTHETIC_LOCATION-781752216580B1BC"], + * anomalyDetections: [{ + * loadingTimeThresholds: [{ + * enabled: true, + * }], + * outageHandlings: [{ + * globalOutage: true, + * localOutage: false, + * retryOnError: false, + * }], + * }], + * script: { + * requests: [{ + * description: "google.com", + * method: "GET", + * url: "https://www.google.com", + * authentication: { + * type: "BASIC_AUTHENTICATION", + * credentials: creds.then(creds => creds.id), + * }, + * configuration: { + * acceptAnyCertificate: true, + * followRedirects: true, + * }, + * validation: { + * rules: [{ + * type: "httpStatusesList", + * passIfFound: false, + * value: ">=400", + * }], + * }, + * }], + * }, + * }); + * ``` */ export function getCredentials(args?: GetCredentialsArgs, opts?: pulumi.InvokeOptions): Promise { args = args || {}; @@ -15,7 +64,9 @@ export function getCredentials(args?: GetCredentialsArgs, opts?: pulumi.InvokeOp opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); return pulumi.runtime.invoke("dynatrace:index/getCredentials:getCredentials", { - "credentials": args.credentials, + "name": args.name, + "scope": args.scope, + "type": args.type, }, opts); } @@ -23,18 +74,40 @@ export function getCredentials(args?: GetCredentialsArgs, opts?: pulumi.InvokeOp * A collection of arguments for invoking getCredentials. */ export interface GetCredentialsArgs { - credentials?: {[key: string]: string}; + /** + * The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + */ + name?: string; + /** + * The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + */ + scope?: string; + /** + * The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + */ + type?: string; } /** * A collection of values returned by getCredentials. */ export interface GetCredentialsResult { - readonly credentials?: {[key: string]: string}; /** * The provider-assigned unique ID for this managed resource. */ readonly id: string; + /** + * The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + */ + readonly name?: string; + /** + * The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + */ + readonly scope?: string; + /** + * The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + */ + readonly type?: string; } export function getCredentialsOutput(args?: GetCredentialsOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output { @@ -45,5 +118,16 @@ export function getCredentialsOutput(args?: GetCredentialsOutputArgs, opts?: pul * A collection of arguments for invoking getCredentials. */ export interface GetCredentialsOutputArgs { - credentials?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + */ + name?: pulumi.Input; + /** + * The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + */ + scope?: pulumi.Input; + /** + * The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + */ + type?: pulumi.Input; } diff --git a/sdk/nodejs/index.ts b/sdk/nodejs/index.ts index f845a42a..39230f70 100644 --- a/sdk/nodejs/index.ts +++ b/sdk/nodejs/index.ts @@ -15,6 +15,11 @@ export type AlertingProfile = import("./alertingProfile").AlertingProfile; export const AlertingProfile: typeof import("./alertingProfile").AlertingProfile = null as any; utilities.lazyLoad(exports, ["AlertingProfile"], () => require("./alertingProfile")); +export { AnsibleTowerNotificationArgs, AnsibleTowerNotificationState } from "./ansibleTowerNotification"; +export type AnsibleTowerNotification = import("./ansibleTowerNotification").AnsibleTowerNotification; +export const AnsibleTowerNotification: typeof import("./ansibleTowerNotification").AnsibleTowerNotification = null as any; +utilities.lazyLoad(exports, ["AnsibleTowerNotification"], () => require("./ansibleTowerNotification")); + export { ApplicationAnomaliesArgs, ApplicationAnomaliesState } from "./applicationAnomalies"; export type ApplicationAnomalies = import("./applicationAnomalies").ApplicationAnomalies; export const ApplicationAnomalies: typeof import("./applicationAnomalies").ApplicationAnomalies = null as any; @@ -95,11 +100,26 @@ export type DiskAnomalies = import("./diskAnomalies").DiskAnomalies; export const DiskAnomalies: typeof import("./diskAnomalies").DiskAnomalies = null as any; utilities.lazyLoad(exports, ["DiskAnomalies"], () => require("./diskAnomalies")); +export { EmailNotificationArgs, EmailNotificationState } from "./emailNotification"; +export type EmailNotification = import("./emailNotification").EmailNotification; +export const EmailNotification: typeof import("./emailNotification").EmailNotification = null as any; +utilities.lazyLoad(exports, ["EmailNotification"], () => require("./emailNotification")); + export { EnvironmentArgs, EnvironmentState } from "./environment"; export type Environment = import("./environment").Environment; export const Environment: typeof import("./environment").Environment = null as any; utilities.lazyLoad(exports, ["Environment"], () => require("./environment")); +export { FrequentIssuesArgs, FrequentIssuesState } from "./frequentIssues"; +export type FrequentIssues = import("./frequentIssues").FrequentIssues; +export const FrequentIssues: typeof import("./frequentIssues").FrequentIssues = null as any; +utilities.lazyLoad(exports, ["FrequentIssues"], () => require("./frequentIssues")); + +export { GetAlertingProfileArgs, GetAlertingProfileResult, GetAlertingProfileOutputArgs } from "./getAlertingProfile"; +export const getAlertingProfile: typeof import("./getAlertingProfile").getAlertingProfile = null as any; +export const getAlertingProfileOutput: typeof import("./getAlertingProfile").getAlertingProfileOutput = null as any; +utilities.lazyLoad(exports, ["getAlertingProfile","getAlertingProfileOutput"], () => require("./getAlertingProfile")); + export { GetAlertingProfilesArgs, GetAlertingProfilesResult, GetAlertingProfilesOutputArgs } from "./getAlertingProfiles"; export const getAlertingProfiles: typeof import("./getAlertingProfiles").getAlertingProfiles = null as any; export const getAlertingProfilesOutput: typeof import("./getAlertingProfiles").getAlertingProfilesOutput = null as any; @@ -179,6 +199,11 @@ export type ImsBridges = import("./imsBridges").ImsBridges; export const ImsBridges: typeof import("./imsBridges").ImsBridges = null as any; utilities.lazyLoad(exports, ["ImsBridges"], () => require("./imsBridges")); +export { JiraNotificationArgs, JiraNotificationState } from "./jiraNotification"; +export type JiraNotification = import("./jiraNotification").JiraNotification; +export const JiraNotification: typeof import("./jiraNotification").JiraNotification = null as any; +utilities.lazyLoad(exports, ["JiraNotification"], () => require("./jiraNotification")); + export { K8sCredentialsArgs, K8sCredentialsState } from "./k8sCredentials"; export type K8sCredentials = import("./k8sCredentials").K8sCredentials; export const K8sCredentials: typeof import("./k8sCredentials").K8sCredentials = null as any; @@ -189,6 +214,11 @@ export type KeyRequests = import("./keyRequests").KeyRequests; export const KeyRequests: typeof import("./keyRequests").KeyRequests = null as any; utilities.lazyLoad(exports, ["KeyRequests"], () => require("./keyRequests")); +export { MaintenanceArgs, MaintenanceState } from "./maintenance"; +export type Maintenance = import("./maintenance").Maintenance; +export const Maintenance: typeof import("./maintenance").Maintenance = null as any; +utilities.lazyLoad(exports, ["Maintenance"], () => require("./maintenance")); + export { MaintenanceWindowArgs, MaintenanceWindowState } from "./maintenanceWindow"; export type MaintenanceWindow = import("./maintenanceWindow").MaintenanceWindow; export const MaintenanceWindow: typeof import("./maintenanceWindow").MaintenanceWindow = null as any; @@ -214,6 +244,16 @@ export type Notification = import("./notification").Notification; export const Notification: typeof import("./notification").Notification = null as any; utilities.lazyLoad(exports, ["Notification"], () => require("./notification")); +export { OpsGenieNotificationArgs, OpsGenieNotificationState } from "./opsGenieNotification"; +export type OpsGenieNotification = import("./opsGenieNotification").OpsGenieNotification; +export const OpsGenieNotification: typeof import("./opsGenieNotification").OpsGenieNotification = null as any; +utilities.lazyLoad(exports, ["OpsGenieNotification"], () => require("./opsGenieNotification")); + +export { PagerDutyNotificationArgs, PagerDutyNotificationState } from "./pagerDutyNotification"; +export type PagerDutyNotification = import("./pagerDutyNotification").PagerDutyNotification; +export const PagerDutyNotification: typeof import("./pagerDutyNotification").PagerDutyNotification = null as any; +utilities.lazyLoad(exports, ["PagerDutyNotification"], () => require("./pagerDutyNotification")); + export { ProcessgroupNamingArgs, ProcessgroupNamingState } from "./processgroupNaming"; export type ProcessgroupNaming = import("./processgroupNaming").ProcessgroupNaming; export const ProcessgroupNaming: typeof import("./processgroupNaming").ProcessgroupNaming = null as any; @@ -264,6 +304,16 @@ export type ServiceNaming = import("./serviceNaming").ServiceNaming; export const ServiceNaming: typeof import("./serviceNaming").ServiceNaming = null as any; utilities.lazyLoad(exports, ["ServiceNaming"], () => require("./serviceNaming")); +export { ServiceNowNotificationArgs, ServiceNowNotificationState } from "./serviceNowNotification"; +export type ServiceNowNotification = import("./serviceNowNotification").ServiceNowNotification; +export const ServiceNowNotification: typeof import("./serviceNowNotification").ServiceNowNotification = null as any; +utilities.lazyLoad(exports, ["ServiceNowNotification"], () => require("./serviceNowNotification")); + +export { SlackNotificationArgs, SlackNotificationState } from "./slackNotification"; +export type SlackNotification = import("./slackNotification").SlackNotification; +export const SlackNotification: typeof import("./slackNotification").SlackNotification = null as any; +utilities.lazyLoad(exports, ["SlackNotification"], () => require("./slackNotification")); + export { SloArgs, SloState } from "./slo"; export type Slo = import("./slo").Slo; export const Slo: typeof import("./slo").Slo = null as any; @@ -289,6 +339,11 @@ export type SpanEntryPoint = import("./spanEntryPoint").SpanEntryPoint; export const SpanEntryPoint: typeof import("./spanEntryPoint").SpanEntryPoint = null as any; utilities.lazyLoad(exports, ["SpanEntryPoint"], () => require("./spanEntryPoint")); +export { TrrelloNotificationArgs, TrrelloNotificationState } from "./trrelloNotification"; +export type TrrelloNotification = import("./trrelloNotification").TrrelloNotification; +export const TrrelloNotification: typeof import("./trrelloNotification").TrrelloNotification = null as any; +utilities.lazyLoad(exports, ["TrrelloNotification"], () => require("./trrelloNotification")); + export { UserArgs, UserState } from "./user"; export type User = import("./user").User; export const User: typeof import("./user").User = null as any; @@ -299,11 +354,26 @@ export type UserGroup = import("./userGroup").UserGroup; export const UserGroup: typeof import("./userGroup").UserGroup = null as any; utilities.lazyLoad(exports, ["UserGroup"], () => require("./userGroup")); +export { VictorOpsNotificationArgs, VictorOpsNotificationState } from "./victorOpsNotification"; +export type VictorOpsNotification = import("./victorOpsNotification").VictorOpsNotification; +export const VictorOpsNotification: typeof import("./victorOpsNotification").VictorOpsNotification = null as any; +utilities.lazyLoad(exports, ["VictorOpsNotification"], () => require("./victorOpsNotification")); + export { WebApplicationArgs, WebApplicationState } from "./webApplication"; export type WebApplication = import("./webApplication").WebApplication; export const WebApplication: typeof import("./webApplication").WebApplication = null as any; utilities.lazyLoad(exports, ["WebApplication"], () => require("./webApplication")); +export { WebhookNotificationArgs, WebhookNotificationState } from "./webhookNotification"; +export type WebhookNotification = import("./webhookNotification").WebhookNotification; +export const WebhookNotification: typeof import("./webhookNotification").WebhookNotification = null as any; +utilities.lazyLoad(exports, ["WebhookNotification"], () => require("./webhookNotification")); + +export { XmattersNotificationArgs, XmattersNotificationState } from "./xmattersNotification"; +export type XmattersNotification = import("./xmattersNotification").XmattersNotification; +export const XmattersNotification: typeof import("./xmattersNotification").XmattersNotification = null as any; +utilities.lazyLoad(exports, ["XmattersNotification"], () => require("./xmattersNotification")); + // Export sub-modules: import * as config from "./config"; @@ -322,6 +392,8 @@ const _module = { return new Alerting(name, undefined, { urn }) case "dynatrace:index/alertingProfile:AlertingProfile": return new AlertingProfile(name, undefined, { urn }) + case "dynatrace:index/ansibleTowerNotification:AnsibleTowerNotification": + return new AnsibleTowerNotification(name, undefined, { urn }) case "dynatrace:index/applicationAnomalies:ApplicationAnomalies": return new ApplicationAnomalies(name, undefined, { urn }) case "dynatrace:index/applicationDataPrivacy:ApplicationDataPrivacy": @@ -354,8 +426,12 @@ const _module = { return new DatabaseAnomalies(name, undefined, { urn }) case "dynatrace:index/diskAnomalies:DiskAnomalies": return new DiskAnomalies(name, undefined, { urn }) + case "dynatrace:index/emailNotification:EmailNotification": + return new EmailNotification(name, undefined, { urn }) case "dynatrace:index/environment:Environment": return new Environment(name, undefined, { urn }) + case "dynatrace:index/frequentIssues:FrequentIssues": + return new FrequentIssues(name, undefined, { urn }) case "dynatrace:index/hostAnomalies:HostAnomalies": return new HostAnomalies(name, undefined, { urn }) case "dynatrace:index/hostNaming:HostNaming": @@ -366,10 +442,14 @@ const _module = { return new IbmMqFilters(name, undefined, { urn }) case "dynatrace:index/imsBridges:ImsBridges": return new ImsBridges(name, undefined, { urn }) + case "dynatrace:index/jiraNotification:JiraNotification": + return new JiraNotification(name, undefined, { urn }) case "dynatrace:index/k8sCredentials:K8sCredentials": return new K8sCredentials(name, undefined, { urn }) case "dynatrace:index/keyRequests:KeyRequests": return new KeyRequests(name, undefined, { urn }) + case "dynatrace:index/maintenance:Maintenance": + return new Maintenance(name, undefined, { urn }) case "dynatrace:index/maintenanceWindow:MaintenanceWindow": return new MaintenanceWindow(name, undefined, { urn }) case "dynatrace:index/managementZone:ManagementZone": @@ -380,6 +460,10 @@ const _module = { return new NetworkZones(name, undefined, { urn }) case "dynatrace:index/notification:Notification": return new Notification(name, undefined, { urn }) + case "dynatrace:index/opsGenieNotification:OpsGenieNotification": + return new OpsGenieNotification(name, undefined, { urn }) + case "dynatrace:index/pagerDutyNotification:PagerDutyNotification": + return new PagerDutyNotification(name, undefined, { urn }) case "dynatrace:index/processgroupNaming:ProcessgroupNaming": return new ProcessgroupNaming(name, undefined, { urn }) case "dynatrace:index/queueManager:QueueManager": @@ -398,6 +482,10 @@ const _module = { return new ServiceAnomalies(name, undefined, { urn }) case "dynatrace:index/serviceNaming:ServiceNaming": return new ServiceNaming(name, undefined, { urn }) + case "dynatrace:index/serviceNowNotification:ServiceNowNotification": + return new ServiceNowNotification(name, undefined, { urn }) + case "dynatrace:index/slackNotification:SlackNotification": + return new SlackNotification(name, undefined, { urn }) case "dynatrace:index/slo:Slo": return new Slo(name, undefined, { urn }) case "dynatrace:index/spanAttributed:SpanAttributed": @@ -408,12 +496,20 @@ const _module = { return new SpanContextPropagation(name, undefined, { urn }) case "dynatrace:index/spanEntryPoint:SpanEntryPoint": return new SpanEntryPoint(name, undefined, { urn }) + case "dynatrace:index/trrelloNotification:TrrelloNotification": + return new TrrelloNotification(name, undefined, { urn }) case "dynatrace:index/user:User": return new User(name, undefined, { urn }) case "dynatrace:index/userGroup:UserGroup": return new UserGroup(name, undefined, { urn }) + case "dynatrace:index/victorOpsNotification:VictorOpsNotification": + return new VictorOpsNotification(name, undefined, { urn }) case "dynatrace:index/webApplication:WebApplication": return new WebApplication(name, undefined, { urn }) + case "dynatrace:index/webhookNotification:WebhookNotification": + return new WebhookNotification(name, undefined, { urn }) + case "dynatrace:index/xmattersNotification:XmattersNotification": + return new XmattersNotification(name, undefined, { urn }) default: throw new Error(`unknown resource type ${type}`); } @@ -421,6 +517,7 @@ const _module = { }; pulumi.runtime.registerResourceModule("dynatrace", "index/alerting", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/alertingProfile", _module) +pulumi.runtime.registerResourceModule("dynatrace", "index/ansibleTowerNotification", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/applicationAnomalies", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/applicationDataPrivacy", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/applicationDetectionRule", _module) @@ -437,19 +534,25 @@ pulumi.runtime.registerResourceModule("dynatrace", "index/dashboard", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/dashboardSharing", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/databaseAnomalies", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/diskAnomalies", _module) +pulumi.runtime.registerResourceModule("dynatrace", "index/emailNotification", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/environment", _module) +pulumi.runtime.registerResourceModule("dynatrace", "index/frequentIssues", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/hostAnomalies", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/hostNaming", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/httpMonitor", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/ibmMqFilters", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/imsBridges", _module) +pulumi.runtime.registerResourceModule("dynatrace", "index/jiraNotification", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/k8sCredentials", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/keyRequests", _module) +pulumi.runtime.registerResourceModule("dynatrace", "index/maintenance", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/maintenanceWindow", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/managementZone", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/mobileApplication", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/networkZones", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/notification", _module) +pulumi.runtime.registerResourceModule("dynatrace", "index/opsGenieNotification", _module) +pulumi.runtime.registerResourceModule("dynatrace", "index/pagerDutyNotification", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/processgroupNaming", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/queueManager", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/queueSharingGroups", _module) @@ -459,14 +562,20 @@ pulumi.runtime.registerResourceModule("dynatrace", "index/requestNamings", _modu pulumi.runtime.registerResourceModule("dynatrace", "index/resourceAttributes", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/serviceAnomalies", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/serviceNaming", _module) +pulumi.runtime.registerResourceModule("dynatrace", "index/serviceNowNotification", _module) +pulumi.runtime.registerResourceModule("dynatrace", "index/slackNotification", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/slo", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/spanAttributed", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/spanCaptureRule", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/spanContextPropagation", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/spanEntryPoint", _module) +pulumi.runtime.registerResourceModule("dynatrace", "index/trrelloNotification", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/user", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/userGroup", _module) +pulumi.runtime.registerResourceModule("dynatrace", "index/victorOpsNotification", _module) pulumi.runtime.registerResourceModule("dynatrace", "index/webApplication", _module) +pulumi.runtime.registerResourceModule("dynatrace", "index/webhookNotification", _module) +pulumi.runtime.registerResourceModule("dynatrace", "index/xmattersNotification", _module) pulumi.runtime.registerResourcePackage("dynatrace", { version: utilities.getVersion(), constructProvider: (name: string, type: string, urn: string): pulumi.ProviderResource => { diff --git a/sdk/nodejs/jiraNotification.ts b/sdk/nodejs/jiraNotification.ts new file mode 100644 index 00000000..7077a943 --- /dev/null +++ b/sdk/nodejs/jiraNotification.ts @@ -0,0 +1,233 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +export class JiraNotification extends pulumi.CustomResource { + /** + * Get an existing JiraNotification resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: JiraNotificationState, opts?: pulumi.CustomResourceOptions): JiraNotification { + return new JiraNotification(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dynatrace:index/jiraNotification:JiraNotification'; + + /** + * Returns true if the given object is an instance of JiraNotification. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is JiraNotification { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === JiraNotification.__pulumiType; + } + + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + public readonly active!: pulumi.Output; + /** + * The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + */ + public readonly apiToken!: pulumi.Output; + /** + * The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + */ + public readonly description!: pulumi.Output; + /** + * The type of the Jira issue to be created by this notification + */ + public readonly issueType!: pulumi.Output; + /** + * The name of the notification configuration + */ + public readonly name!: pulumi.Output; + /** + * The ID of the associated alerting profile + */ + public readonly profile!: pulumi.Output; + /** + * The project key of the Jira issue to be created by this notification + */ + public readonly projectKey!: pulumi.Output; + /** + * The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + public readonly summary!: pulumi.Output; + /** + * The URL of the Jira API endpoint + */ + public readonly url!: pulumi.Output; + /** + * The username of the Jira profile + */ + public readonly username!: pulumi.Output; + + /** + * Create a JiraNotification resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: JiraNotificationArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: JiraNotificationArgs | JiraNotificationState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as JiraNotificationState | undefined; + resourceInputs["active"] = state ? state.active : undefined; + resourceInputs["apiToken"] = state ? state.apiToken : undefined; + resourceInputs["description"] = state ? state.description : undefined; + resourceInputs["issueType"] = state ? state.issueType : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["profile"] = state ? state.profile : undefined; + resourceInputs["projectKey"] = state ? state.projectKey : undefined; + resourceInputs["summary"] = state ? state.summary : undefined; + resourceInputs["url"] = state ? state.url : undefined; + resourceInputs["username"] = state ? state.username : undefined; + } else { + const args = argsOrState as JiraNotificationArgs | undefined; + if ((!args || args.active === undefined) && !opts.urn) { + throw new Error("Missing required property 'active'"); + } + if ((!args || args.description === undefined) && !opts.urn) { + throw new Error("Missing required property 'description'"); + } + if ((!args || args.issueType === undefined) && !opts.urn) { + throw new Error("Missing required property 'issueType'"); + } + if ((!args || args.profile === undefined) && !opts.urn) { + throw new Error("Missing required property 'profile'"); + } + if ((!args || args.projectKey === undefined) && !opts.urn) { + throw new Error("Missing required property 'projectKey'"); + } + if ((!args || args.summary === undefined) && !opts.urn) { + throw new Error("Missing required property 'summary'"); + } + if ((!args || args.url === undefined) && !opts.urn) { + throw new Error("Missing required property 'url'"); + } + if ((!args || args.username === undefined) && !opts.urn) { + throw new Error("Missing required property 'username'"); + } + resourceInputs["active"] = args ? args.active : undefined; + resourceInputs["apiToken"] = args?.apiToken ? pulumi.secret(args.apiToken) : undefined; + resourceInputs["description"] = args ? args.description : undefined; + resourceInputs["issueType"] = args ? args.issueType : undefined; + resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["profile"] = args ? args.profile : undefined; + resourceInputs["projectKey"] = args ? args.projectKey : undefined; + resourceInputs["summary"] = args ? args.summary : undefined; + resourceInputs["url"] = args ? args.url : undefined; + resourceInputs["username"] = args ? args.username : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + const secretOpts = { additionalSecretOutputs: ["apiToken"] }; + opts = pulumi.mergeOptions(opts, secretOpts); + super(JiraNotification.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering JiraNotification resources. + */ +export interface JiraNotificationState { + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active?: pulumi.Input; + /** + * The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + */ + apiToken?: pulumi.Input; + /** + * The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + */ + description?: pulumi.Input; + /** + * The type of the Jira issue to be created by this notification + */ + issueType?: pulumi.Input; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile?: pulumi.Input; + /** + * The project key of the Jira issue to be created by this notification + */ + projectKey?: pulumi.Input; + /** + * The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + summary?: pulumi.Input; + /** + * The URL of the Jira API endpoint + */ + url?: pulumi.Input; + /** + * The username of the Jira profile + */ + username?: pulumi.Input; +} + +/** + * The set of arguments for constructing a JiraNotification resource. + */ +export interface JiraNotificationArgs { + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active: pulumi.Input; + /** + * The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + */ + apiToken?: pulumi.Input; + /** + * The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + */ + description: pulumi.Input; + /** + * The type of the Jira issue to be created by this notification + */ + issueType: pulumi.Input; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile: pulumi.Input; + /** + * The project key of the Jira issue to be created by this notification + */ + projectKey: pulumi.Input; + /** + * The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + summary: pulumi.Input; + /** + * The URL of the Jira API endpoint + */ + url: pulumi.Input; + /** + * The username of the Jira profile + */ + username: pulumi.Input; +} diff --git a/sdk/nodejs/maintenance.ts b/sdk/nodejs/maintenance.ts new file mode 100644 index 00000000..bc556e8e --- /dev/null +++ b/sdk/nodejs/maintenance.ts @@ -0,0 +1,131 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as inputs from "./types/input"; +import * as outputs from "./types/output"; +import * as utilities from "./utilities"; + +export class Maintenance extends pulumi.CustomResource { + /** + * Get an existing Maintenance resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: MaintenanceState, opts?: pulumi.CustomResourceOptions): Maintenance { + return new Maintenance(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dynatrace:index/maintenance:Maintenance'; + + /** + * Returns true if the given object is an instance of Maintenance. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is Maintenance { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === Maintenance.__pulumiType; + } + + /** + * The maintenance window is enabled or disabled + */ + public readonly enabled!: pulumi.Output; + /** + * The filters of the maintenance window + */ + public readonly filters!: pulumi.Output; + /** + * The general properties of the maintenance window + */ + public readonly generalProperties!: pulumi.Output; + /** + * The schedule of the maintenance window + */ + public readonly schedule!: pulumi.Output; + + /** + * Create a Maintenance resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: MaintenanceArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: MaintenanceArgs | MaintenanceState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as MaintenanceState | undefined; + resourceInputs["enabled"] = state ? state.enabled : undefined; + resourceInputs["filters"] = state ? state.filters : undefined; + resourceInputs["generalProperties"] = state ? state.generalProperties : undefined; + resourceInputs["schedule"] = state ? state.schedule : undefined; + } else { + const args = argsOrState as MaintenanceArgs | undefined; + if ((!args || args.generalProperties === undefined) && !opts.urn) { + throw new Error("Missing required property 'generalProperties'"); + } + if ((!args || args.schedule === undefined) && !opts.urn) { + throw new Error("Missing required property 'schedule'"); + } + resourceInputs["enabled"] = args ? args.enabled : undefined; + resourceInputs["filters"] = args ? args.filters : undefined; + resourceInputs["generalProperties"] = args ? args.generalProperties : undefined; + resourceInputs["schedule"] = args ? args.schedule : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(Maintenance.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering Maintenance resources. + */ +export interface MaintenanceState { + /** + * The maintenance window is enabled or disabled + */ + enabled?: pulumi.Input; + /** + * The filters of the maintenance window + */ + filters?: pulumi.Input[]>; + /** + * The general properties of the maintenance window + */ + generalProperties?: pulumi.Input; + /** + * The schedule of the maintenance window + */ + schedule?: pulumi.Input; +} + +/** + * The set of arguments for constructing a Maintenance resource. + */ +export interface MaintenanceArgs { + /** + * The maintenance window is enabled or disabled + */ + enabled?: pulumi.Input; + /** + * The filters of the maintenance window + */ + filters?: pulumi.Input[]>; + /** + * The general properties of the maintenance window + */ + generalProperties: pulumi.Input; + /** + * The schedule of the maintenance window + */ + schedule: pulumi.Input; +} diff --git a/sdk/nodejs/opsGenieNotification.ts b/sdk/nodejs/opsGenieNotification.ts new file mode 100644 index 00000000..745e9831 --- /dev/null +++ b/sdk/nodejs/opsGenieNotification.ts @@ -0,0 +1,165 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +export class OpsGenieNotification extends pulumi.CustomResource { + /** + * Get an existing OpsGenieNotification resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: OpsGenieNotificationState, opts?: pulumi.CustomResourceOptions): OpsGenieNotification { + return new OpsGenieNotification(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dynatrace:index/opsGenieNotification:OpsGenieNotification'; + + /** + * Returns true if the given object is an instance of OpsGenieNotification. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is OpsGenieNotification { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === OpsGenieNotification.__pulumiType; + } + + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + public readonly active!: pulumi.Output; + /** + * The API key to access OpsGenie + */ + public readonly apiKey!: pulumi.Output; + /** + * The region domain of the OpsGenie + */ + public readonly domain!: pulumi.Output; + /** + * The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + */ + public readonly message!: pulumi.Output; + /** + * The name of the notification configuration + */ + public readonly name!: pulumi.Output; + /** + * The ID of the associated alerting profile + */ + public readonly profile!: pulumi.Output; + + /** + * Create a OpsGenieNotification resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: OpsGenieNotificationArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: OpsGenieNotificationArgs | OpsGenieNotificationState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as OpsGenieNotificationState | undefined; + resourceInputs["active"] = state ? state.active : undefined; + resourceInputs["apiKey"] = state ? state.apiKey : undefined; + resourceInputs["domain"] = state ? state.domain : undefined; + resourceInputs["message"] = state ? state.message : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["profile"] = state ? state.profile : undefined; + } else { + const args = argsOrState as OpsGenieNotificationArgs | undefined; + if ((!args || args.active === undefined) && !opts.urn) { + throw new Error("Missing required property 'active'"); + } + if ((!args || args.domain === undefined) && !opts.urn) { + throw new Error("Missing required property 'domain'"); + } + if ((!args || args.message === undefined) && !opts.urn) { + throw new Error("Missing required property 'message'"); + } + if ((!args || args.profile === undefined) && !opts.urn) { + throw new Error("Missing required property 'profile'"); + } + resourceInputs["active"] = args ? args.active : undefined; + resourceInputs["apiKey"] = args?.apiKey ? pulumi.secret(args.apiKey) : undefined; + resourceInputs["domain"] = args ? args.domain : undefined; + resourceInputs["message"] = args ? args.message : undefined; + resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["profile"] = args ? args.profile : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + const secretOpts = { additionalSecretOutputs: ["apiKey"] }; + opts = pulumi.mergeOptions(opts, secretOpts); + super(OpsGenieNotification.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering OpsGenieNotification resources. + */ +export interface OpsGenieNotificationState { + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active?: pulumi.Input; + /** + * The API key to access OpsGenie + */ + apiKey?: pulumi.Input; + /** + * The region domain of the OpsGenie + */ + domain?: pulumi.Input; + /** + * The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + */ + message?: pulumi.Input; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile?: pulumi.Input; +} + +/** + * The set of arguments for constructing a OpsGenieNotification resource. + */ +export interface OpsGenieNotificationArgs { + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active: pulumi.Input; + /** + * The API key to access OpsGenie + */ + apiKey?: pulumi.Input; + /** + * The region domain of the OpsGenie + */ + domain: pulumi.Input; + /** + * The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + */ + message: pulumi.Input; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile: pulumi.Input; +} diff --git a/sdk/nodejs/pagerDutyNotification.ts b/sdk/nodejs/pagerDutyNotification.ts new file mode 100644 index 00000000..0020c981 --- /dev/null +++ b/sdk/nodejs/pagerDutyNotification.ts @@ -0,0 +1,165 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +export class PagerDutyNotification extends pulumi.CustomResource { + /** + * Get an existing PagerDutyNotification resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: PagerDutyNotificationState, opts?: pulumi.CustomResourceOptions): PagerDutyNotification { + return new PagerDutyNotification(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dynatrace:index/pagerDutyNotification:PagerDutyNotification'; + + /** + * Returns true if the given object is an instance of PagerDutyNotification. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is PagerDutyNotification { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === PagerDutyNotification.__pulumiType; + } + + /** + * The name of the PagerDuty account + */ + public readonly account!: pulumi.Output; + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + public readonly active!: pulumi.Output; + /** + * The API key to access PagerDuty + */ + public readonly apiKey!: pulumi.Output; + /** + * The name of the notification configuration + */ + public readonly name!: pulumi.Output; + /** + * The ID of the associated alerting profile + */ + public readonly profile!: pulumi.Output; + /** + * The name of the PagerDuty Service + */ + public readonly service!: pulumi.Output; + + /** + * Create a PagerDutyNotification resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: PagerDutyNotificationArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: PagerDutyNotificationArgs | PagerDutyNotificationState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as PagerDutyNotificationState | undefined; + resourceInputs["account"] = state ? state.account : undefined; + resourceInputs["active"] = state ? state.active : undefined; + resourceInputs["apiKey"] = state ? state.apiKey : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["profile"] = state ? state.profile : undefined; + resourceInputs["service"] = state ? state.service : undefined; + } else { + const args = argsOrState as PagerDutyNotificationArgs | undefined; + if ((!args || args.account === undefined) && !opts.urn) { + throw new Error("Missing required property 'account'"); + } + if ((!args || args.active === undefined) && !opts.urn) { + throw new Error("Missing required property 'active'"); + } + if ((!args || args.profile === undefined) && !opts.urn) { + throw new Error("Missing required property 'profile'"); + } + if ((!args || args.service === undefined) && !opts.urn) { + throw new Error("Missing required property 'service'"); + } + resourceInputs["account"] = args ? args.account : undefined; + resourceInputs["active"] = args ? args.active : undefined; + resourceInputs["apiKey"] = args?.apiKey ? pulumi.secret(args.apiKey) : undefined; + resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["profile"] = args ? args.profile : undefined; + resourceInputs["service"] = args ? args.service : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + const secretOpts = { additionalSecretOutputs: ["apiKey"] }; + opts = pulumi.mergeOptions(opts, secretOpts); + super(PagerDutyNotification.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering PagerDutyNotification resources. + */ +export interface PagerDutyNotificationState { + /** + * The name of the PagerDuty account + */ + account?: pulumi.Input; + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active?: pulumi.Input; + /** + * The API key to access PagerDuty + */ + apiKey?: pulumi.Input; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile?: pulumi.Input; + /** + * The name of the PagerDuty Service + */ + service?: pulumi.Input; +} + +/** + * The set of arguments for constructing a PagerDutyNotification resource. + */ +export interface PagerDutyNotificationArgs { + /** + * The name of the PagerDuty account + */ + account: pulumi.Input; + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active: pulumi.Input; + /** + * The API key to access PagerDuty + */ + apiKey?: pulumi.Input; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile: pulumi.Input; + /** + * The name of the PagerDuty Service + */ + service: pulumi.Input; +} diff --git a/sdk/nodejs/serviceNowNotification.ts b/sdk/nodejs/serviceNowNotification.ts new file mode 100644 index 00000000..8ded3970 --- /dev/null +++ b/sdk/nodejs/serviceNowNotification.ts @@ -0,0 +1,224 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +export class ServiceNowNotification extends pulumi.CustomResource { + /** + * Get an existing ServiceNowNotification resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: ServiceNowNotificationState, opts?: pulumi.CustomResourceOptions): ServiceNowNotification { + return new ServiceNowNotification(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dynatrace:index/serviceNowNotification:ServiceNowNotification'; + + /** + * Returns true if the given object is an instance of ServiceNowNotification. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is ServiceNowNotification { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === ServiceNowNotification.__pulumiType; + } + + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + public readonly active!: pulumi.Output; + /** + * Send events into ServiceNow ITOM + */ + public readonly events!: pulumi.Output; + /** + * Send incidents into ServiceNow ITSM + */ + public readonly incidents!: pulumi.Output; + /** + * The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + */ + public readonly instance!: pulumi.Output; + /** + * The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + public readonly message!: pulumi.Output; + /** + * The name of the notification configuration + */ + public readonly name!: pulumi.Output; + /** + * The password to the ServiceNow account + */ + public readonly password!: pulumi.Output; + /** + * The ID of the associated alerting profile + */ + public readonly profile!: pulumi.Output; + /** + * The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + */ + public readonly url!: pulumi.Output; + /** + * The username of the ServiceNow account. Make sure that your user account has the `restService`, `webRequestAdmin`, and `x_dynat_ruxit.Integration` roles + */ + public readonly username!: pulumi.Output; + + /** + * Create a ServiceNowNotification resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: ServiceNowNotificationArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: ServiceNowNotificationArgs | ServiceNowNotificationState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as ServiceNowNotificationState | undefined; + resourceInputs["active"] = state ? state.active : undefined; + resourceInputs["events"] = state ? state.events : undefined; + resourceInputs["incidents"] = state ? state.incidents : undefined; + resourceInputs["instance"] = state ? state.instance : undefined; + resourceInputs["message"] = state ? state.message : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["password"] = state ? state.password : undefined; + resourceInputs["profile"] = state ? state.profile : undefined; + resourceInputs["url"] = state ? state.url : undefined; + resourceInputs["username"] = state ? state.username : undefined; + } else { + const args = argsOrState as ServiceNowNotificationArgs | undefined; + if ((!args || args.active === undefined) && !opts.urn) { + throw new Error("Missing required property 'active'"); + } + if ((!args || args.incidents === undefined) && !opts.urn) { + throw new Error("Missing required property 'incidents'"); + } + if ((!args || args.message === undefined) && !opts.urn) { + throw new Error("Missing required property 'message'"); + } + if ((!args || args.profile === undefined) && !opts.urn) { + throw new Error("Missing required property 'profile'"); + } + if ((!args || args.username === undefined) && !opts.urn) { + throw new Error("Missing required property 'username'"); + } + resourceInputs["active"] = args ? args.active : undefined; + resourceInputs["events"] = args ? args.events : undefined; + resourceInputs["incidents"] = args ? args.incidents : undefined; + resourceInputs["instance"] = args ? args.instance : undefined; + resourceInputs["message"] = args ? args.message : undefined; + resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["password"] = args?.password ? pulumi.secret(args.password) : undefined; + resourceInputs["profile"] = args ? args.profile : undefined; + resourceInputs["url"] = args ? args.url : undefined; + resourceInputs["username"] = args ? args.username : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + const secretOpts = { additionalSecretOutputs: ["password"] }; + opts = pulumi.mergeOptions(opts, secretOpts); + super(ServiceNowNotification.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering ServiceNowNotification resources. + */ +export interface ServiceNowNotificationState { + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active?: pulumi.Input; + /** + * Send events into ServiceNow ITOM + */ + events?: pulumi.Input; + /** + * Send incidents into ServiceNow ITSM + */ + incidents?: pulumi.Input; + /** + * The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + */ + instance?: pulumi.Input; + /** + * The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + message?: pulumi.Input; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * The password to the ServiceNow account + */ + password?: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile?: pulumi.Input; + /** + * The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + */ + url?: pulumi.Input; + /** + * The username of the ServiceNow account. Make sure that your user account has the `restService`, `webRequestAdmin`, and `x_dynat_ruxit.Integration` roles + */ + username?: pulumi.Input; +} + +/** + * The set of arguments for constructing a ServiceNowNotification resource. + */ +export interface ServiceNowNotificationArgs { + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active: pulumi.Input; + /** + * Send events into ServiceNow ITOM + */ + events?: pulumi.Input; + /** + * Send incidents into ServiceNow ITSM + */ + incidents: pulumi.Input; + /** + * The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + */ + instance?: pulumi.Input; + /** + * The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + message: pulumi.Input; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * The password to the ServiceNow account + */ + password?: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile: pulumi.Input; + /** + * The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + */ + url?: pulumi.Input; + /** + * The username of the ServiceNow account. Make sure that your user account has the `restService`, `webRequestAdmin`, and `x_dynat_ruxit.Integration` roles + */ + username: pulumi.Input; +} diff --git a/sdk/nodejs/slackNotification.ts b/sdk/nodejs/slackNotification.ts new file mode 100644 index 00000000..738966e0 --- /dev/null +++ b/sdk/nodejs/slackNotification.ts @@ -0,0 +1,168 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +export class SlackNotification extends pulumi.CustomResource { + /** + * Get an existing SlackNotification resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: SlackNotificationState, opts?: pulumi.CustomResourceOptions): SlackNotification { + return new SlackNotification(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dynatrace:index/slackNotification:SlackNotification'; + + /** + * Returns true if the given object is an instance of SlackNotification. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is SlackNotification { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === SlackNotification.__pulumiType; + } + + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + public readonly active!: pulumi.Output; + /** + * The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + */ + public readonly channel!: pulumi.Output; + /** + * The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + public readonly message!: pulumi.Output; + /** + * The name of the notification configuration + */ + public readonly name!: pulumi.Output; + /** + * The ID of the associated alerting profile + */ + public readonly profile!: pulumi.Output; + /** + * The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + */ + public readonly url!: pulumi.Output; + + /** + * Create a SlackNotification resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: SlackNotificationArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: SlackNotificationArgs | SlackNotificationState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as SlackNotificationState | undefined; + resourceInputs["active"] = state ? state.active : undefined; + resourceInputs["channel"] = state ? state.channel : undefined; + resourceInputs["message"] = state ? state.message : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["profile"] = state ? state.profile : undefined; + resourceInputs["url"] = state ? state.url : undefined; + } else { + const args = argsOrState as SlackNotificationArgs | undefined; + if ((!args || args.active === undefined) && !opts.urn) { + throw new Error("Missing required property 'active'"); + } + if ((!args || args.channel === undefined) && !opts.urn) { + throw new Error("Missing required property 'channel'"); + } + if ((!args || args.message === undefined) && !opts.urn) { + throw new Error("Missing required property 'message'"); + } + if ((!args || args.profile === undefined) && !opts.urn) { + throw new Error("Missing required property 'profile'"); + } + if ((!args || args.url === undefined) && !opts.urn) { + throw new Error("Missing required property 'url'"); + } + resourceInputs["active"] = args ? args.active : undefined; + resourceInputs["channel"] = args ? args.channel : undefined; + resourceInputs["message"] = args ? args.message : undefined; + resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["profile"] = args ? args.profile : undefined; + resourceInputs["url"] = args?.url ? pulumi.secret(args.url) : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + const secretOpts = { additionalSecretOutputs: ["url"] }; + opts = pulumi.mergeOptions(opts, secretOpts); + super(SlackNotification.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering SlackNotification resources. + */ +export interface SlackNotificationState { + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active?: pulumi.Input; + /** + * The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + */ + channel?: pulumi.Input; + /** + * The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + message?: pulumi.Input; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile?: pulumi.Input; + /** + * The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + */ + url?: pulumi.Input; +} + +/** + * The set of arguments for constructing a SlackNotification resource. + */ +export interface SlackNotificationArgs { + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active: pulumi.Input; + /** + * The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + */ + channel: pulumi.Input; + /** + * The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + message: pulumi.Input; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile: pulumi.Input; + /** + * The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + */ + url: pulumi.Input; +} diff --git a/sdk/nodejs/trrelloNotification.ts b/sdk/nodejs/trrelloNotification.ts new file mode 100644 index 00000000..f5d3d4fd --- /dev/null +++ b/sdk/nodejs/trrelloNotification.ts @@ -0,0 +1,231 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +export class TrrelloNotification extends pulumi.CustomResource { + /** + * Get an existing TrrelloNotification resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: TrrelloNotificationState, opts?: pulumi.CustomResourceOptions): TrrelloNotification { + return new TrrelloNotification(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dynatrace:index/trrelloNotification:TrrelloNotification'; + + /** + * Returns true if the given object is an instance of TrrelloNotification. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is TrrelloNotification { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === TrrelloNotification.__pulumiType; + } + + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + public readonly active!: pulumi.Output; + /** + * The application key for the Trello account + */ + public readonly applicationKey!: pulumi.Output; + /** + * The application token for the Trello account + */ + public readonly authorizationToken!: pulumi.Output; + /** + * The Trello board to which the card should be assigned + */ + public readonly boardId!: pulumi.Output; + /** + * The description of the Trello card. You can use same placeholders as in card text + */ + public readonly description!: pulumi.Output; + /** + * The Trello list to which the card should be assigned + */ + public readonly listId!: pulumi.Output; + /** + * The name of the notification configuration + */ + public readonly name!: pulumi.Output; + /** + * The ID of the associated alerting profile + */ + public readonly profile!: pulumi.Output; + /** + * The Trello list to which the card of the resolved problem should be assigned + */ + public readonly resolvedListId!: pulumi.Output; + /** + * The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + public readonly text!: pulumi.Output; + + /** + * Create a TrrelloNotification resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: TrrelloNotificationArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: TrrelloNotificationArgs | TrrelloNotificationState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as TrrelloNotificationState | undefined; + resourceInputs["active"] = state ? state.active : undefined; + resourceInputs["applicationKey"] = state ? state.applicationKey : undefined; + resourceInputs["authorizationToken"] = state ? state.authorizationToken : undefined; + resourceInputs["boardId"] = state ? state.boardId : undefined; + resourceInputs["description"] = state ? state.description : undefined; + resourceInputs["listId"] = state ? state.listId : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["profile"] = state ? state.profile : undefined; + resourceInputs["resolvedListId"] = state ? state.resolvedListId : undefined; + resourceInputs["text"] = state ? state.text : undefined; + } else { + const args = argsOrState as TrrelloNotificationArgs | undefined; + if ((!args || args.active === undefined) && !opts.urn) { + throw new Error("Missing required property 'active'"); + } + if ((!args || args.applicationKey === undefined) && !opts.urn) { + throw new Error("Missing required property 'applicationKey'"); + } + if ((!args || args.boardId === undefined) && !opts.urn) { + throw new Error("Missing required property 'boardId'"); + } + if ((!args || args.description === undefined) && !opts.urn) { + throw new Error("Missing required property 'description'"); + } + if ((!args || args.listId === undefined) && !opts.urn) { + throw new Error("Missing required property 'listId'"); + } + if ((!args || args.profile === undefined) && !opts.urn) { + throw new Error("Missing required property 'profile'"); + } + if ((!args || args.resolvedListId === undefined) && !opts.urn) { + throw new Error("Missing required property 'resolvedListId'"); + } + if ((!args || args.text === undefined) && !opts.urn) { + throw new Error("Missing required property 'text'"); + } + resourceInputs["active"] = args ? args.active : undefined; + resourceInputs["applicationKey"] = args ? args.applicationKey : undefined; + resourceInputs["authorizationToken"] = args ? args.authorizationToken : undefined; + resourceInputs["boardId"] = args ? args.boardId : undefined; + resourceInputs["description"] = args ? args.description : undefined; + resourceInputs["listId"] = args ? args.listId : undefined; + resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["profile"] = args ? args.profile : undefined; + resourceInputs["resolvedListId"] = args ? args.resolvedListId : undefined; + resourceInputs["text"] = args ? args.text : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(TrrelloNotification.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering TrrelloNotification resources. + */ +export interface TrrelloNotificationState { + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active?: pulumi.Input; + /** + * The application key for the Trello account + */ + applicationKey?: pulumi.Input; + /** + * The application token for the Trello account + */ + authorizationToken?: pulumi.Input; + /** + * The Trello board to which the card should be assigned + */ + boardId?: pulumi.Input; + /** + * The description of the Trello card. You can use same placeholders as in card text + */ + description?: pulumi.Input; + /** + * The Trello list to which the card should be assigned + */ + listId?: pulumi.Input; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile?: pulumi.Input; + /** + * The Trello list to which the card of the resolved problem should be assigned + */ + resolvedListId?: pulumi.Input; + /** + * The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + text?: pulumi.Input; +} + +/** + * The set of arguments for constructing a TrrelloNotification resource. + */ +export interface TrrelloNotificationArgs { + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active: pulumi.Input; + /** + * The application key for the Trello account + */ + applicationKey: pulumi.Input; + /** + * The application token for the Trello account + */ + authorizationToken?: pulumi.Input; + /** + * The Trello board to which the card should be assigned + */ + boardId: pulumi.Input; + /** + * The description of the Trello card. You can use same placeholders as in card text + */ + description: pulumi.Input; + /** + * The Trello list to which the card should be assigned + */ + listId: pulumi.Input; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile: pulumi.Input; + /** + * The Trello list to which the card of the resolved problem should be assigned + */ + resolvedListId: pulumi.Input; + /** + * The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + text: pulumi.Input; +} diff --git a/sdk/nodejs/tsconfig.json b/sdk/nodejs/tsconfig.json index a3c5ffaf..e0e77a1c 100644 --- a/sdk/nodejs/tsconfig.json +++ b/sdk/nodejs/tsconfig.json @@ -15,6 +15,7 @@ "files": [ "alerting.ts", "alertingProfile.ts", + "ansibleTowerNotification.ts", "applicationAnomalies.ts", "applicationDataPrivacy.ts", "applicationDetectionRule.ts", @@ -33,7 +34,10 @@ "dashboardSharing.ts", "databaseAnomalies.ts", "diskAnomalies.ts", + "emailNotification.ts", "environment.ts", + "frequentIssues.ts", + "getAlertingProfile.ts", "getAlertingProfiles.ts", "getApplication.ts", "getAwsIamExternal.ts", @@ -51,13 +55,17 @@ "ibmMqFilters.ts", "imsBridges.ts", "index.ts", + "jiraNotification.ts", "k8sCredentials.ts", "keyRequests.ts", + "maintenance.ts", "maintenanceWindow.ts", "managementZone.ts", "mobileApplication.ts", "networkZones.ts", "notification.ts", + "opsGenieNotification.ts", + "pagerDutyNotification.ts", "processgroupNaming.ts", "provider.ts", "queueManager.ts", @@ -68,17 +76,23 @@ "resourceAttributes.ts", "serviceAnomalies.ts", "serviceNaming.ts", + "serviceNowNotification.ts", + "slackNotification.ts", "slo.ts", "spanAttributed.ts", "spanCaptureRule.ts", "spanContextPropagation.ts", "spanEntryPoint.ts", + "trrelloNotification.ts", "types/index.ts", "types/input.ts", "types/output.ts", "user.ts", "userGroup.ts", "utilities.ts", - "webApplication.ts" + "victorOpsNotification.ts", + "webApplication.ts", + "webhookNotification.ts", + "xmattersNotification.ts" ] } diff --git a/sdk/nodejs/types/input.ts b/sdk/nodejs/types/input.ts index 64e4f83b..f6a476fe 100644 --- a/sdk/nodejs/types/input.ts +++ b/sdk/nodejs/types/input.ts @@ -332,6 +332,7 @@ export interface ApplicationErrorRulesHttpErrorsRule { export interface AutotagEntitySelectorBasedRule { enabled?: pulumi.Input; + normalization?: pulumi.Input; selector?: pulumi.Input; unknowns?: pulumi.Input; valueFormat?: pulumi.Input; @@ -2520,6 +2521,10 @@ export interface DashboardDashboardMetadata { * the owner of the dashboard */ owner: pulumi.Input; + /** + * the dashboard is a preset (`true`) or not (`false`). Default is `false`. + */ + preset?: pulumi.Input; /** * the dashboard is shared (`true`) or private (`false`) */ @@ -4210,6 +4215,122 @@ export interface K8sCredentialsEventsFieldSelector { unknowns?: pulumi.Input; } +export interface MaintenanceFilter { + /** + * A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies + */ + filters?: pulumi.Input[]>; +} + +export interface MaintenanceFilterFilter { + entityId?: pulumi.Input; + entityTags?: pulumi.Input[]>; + entityType?: pulumi.Input; + managementZones?: pulumi.Input[]>; +} + +export interface MaintenanceGeneralProperties { + /** + * A short description of the maintenance purpose + */ + description?: pulumi.Input; + /** + * Suppress execution of synthetic monitors during the maintenance + */ + disableSynthetic?: pulumi.Input; + /** + * The name of the maintenance window, displayed in the UI + */ + name: pulumi.Input; + /** + * The type of suppression of alerting and problem detection during the maintenance + */ + suppression: pulumi.Input; + /** + * The type of the maintenance: planned or unplanned + */ + type: pulumi.Input; +} + +export interface MaintenanceSchedule { + /** + * The configuration for maintenance windows occuring daily + */ + dailyRecurrence?: pulumi.Input; + /** + * The configuration for maintenance windows occuring monthly + */ + monthlyRecurrence?: pulumi.Input; + /** + * The configuration for maintenance windows occuring once + */ + onceRecurrence?: pulumi.Input; + /** + * The time window of the maintenance window + */ + type: pulumi.Input; + /** + * The configuration for maintenance windows occuring weekly + */ + weeklyRecurrence?: pulumi.Input; +} + +export interface MaintenanceScheduleDailyRecurrence { + recurrenceRange: pulumi.Input; + timeWindow: pulumi.Input; +} + +export interface MaintenanceScheduleDailyRecurrenceRecurrenceRange { + endDate: pulumi.Input; + startDate: pulumi.Input; +} + +export interface MaintenanceScheduleDailyRecurrenceTimeWindow { + endTime: pulumi.Input; + startTime: pulumi.Input; + timeZone: pulumi.Input; +} + +export interface MaintenanceScheduleMonthlyRecurrence { + dayOfMonth: pulumi.Input; + recurrenceRange: pulumi.Input; + timeWindow: pulumi.Input; +} + +export interface MaintenanceScheduleMonthlyRecurrenceRecurrenceRange { + endDate: pulumi.Input; + startDate: pulumi.Input; +} + +export interface MaintenanceScheduleMonthlyRecurrenceTimeWindow { + endTime: pulumi.Input; + startTime: pulumi.Input; + timeZone: pulumi.Input; +} + +export interface MaintenanceScheduleOnceRecurrence { + endTime: pulumi.Input; + startTime: pulumi.Input; + timeZone: pulumi.Input; +} + +export interface MaintenanceScheduleWeeklyRecurrence { + dayOfWeek: pulumi.Input; + recurrenceRange: pulumi.Input; + timeWindow: pulumi.Input; +} + +export interface MaintenanceScheduleWeeklyRecurrenceRecurrenceRange { + endDate: pulumi.Input; + startDate: pulumi.Input; +} + +export interface MaintenanceScheduleWeeklyRecurrenceTimeWindow { + endTime: pulumi.Input; + startTime: pulumi.Input; + timeZone: pulumi.Input; +} + export interface MaintenanceWindowMetadata { /** * Dynatrace server version @@ -8406,3 +8527,35 @@ export interface WebApplicationXhrActionApdexSettings { */ toleratedThreshold?: pulumi.Input; } + +export interface WebhookNotificationHeaders { + /** + * An additional HTTP Header to include when sending requests + */ + headers: pulumi.Input[]>; +} + +export interface WebhookNotificationHeadersHeader { + /** + * The name of the notification configuration + */ + name: pulumi.Input; + secretValue?: pulumi.Input; + value?: pulumi.Input; +} + +export interface XmattersNotificationHeaders { + /** + * An additional HTTP Header to include when sending requests + */ + headers: pulumi.Input[]>; +} + +export interface XmattersNotificationHeadersHeader { + /** + * The name of the notification configuration + */ + name: pulumi.Input; + secretValue?: pulumi.Input; + value?: pulumi.Input; +} diff --git a/sdk/nodejs/types/output.ts b/sdk/nodejs/types/output.ts index 224ee7c2..7f57f47e 100644 --- a/sdk/nodejs/types/output.ts +++ b/sdk/nodejs/types/output.ts @@ -332,6 +332,7 @@ export interface ApplicationErrorRulesHttpErrorsRule { export interface AutotagEntitySelectorBasedRule { enabled?: boolean; + normalization?: string; selector?: string; unknowns?: string; valueFormat?: string; @@ -2520,6 +2521,10 @@ export interface DashboardDashboardMetadata { * the owner of the dashboard */ owner: string; + /** + * the dashboard is a preset (`true`) or not (`false`). Default is `false`. + */ + preset?: boolean; /** * the dashboard is shared (`true`) or private (`false`) */ @@ -4190,6 +4195,122 @@ export interface K8sCredentialsEventsFieldSelector { unknowns?: string; } +export interface MaintenanceFilter { + /** + * A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies + */ + filters?: outputs.MaintenanceFilterFilter[]; +} + +export interface MaintenanceFilterFilter { + entityId?: string; + entityTags?: string[]; + entityType?: string; + managementZones?: string[]; +} + +export interface MaintenanceGeneralProperties { + /** + * A short description of the maintenance purpose + */ + description?: string; + /** + * Suppress execution of synthetic monitors during the maintenance + */ + disableSynthetic?: boolean; + /** + * The name of the maintenance window, displayed in the UI + */ + name: string; + /** + * The type of suppression of alerting and problem detection during the maintenance + */ + suppression: string; + /** + * The type of the maintenance: planned or unplanned + */ + type: string; +} + +export interface MaintenanceSchedule { + /** + * The configuration for maintenance windows occuring daily + */ + dailyRecurrence?: outputs.MaintenanceScheduleDailyRecurrence; + /** + * The configuration for maintenance windows occuring monthly + */ + monthlyRecurrence?: outputs.MaintenanceScheduleMonthlyRecurrence; + /** + * The configuration for maintenance windows occuring once + */ + onceRecurrence?: outputs.MaintenanceScheduleOnceRecurrence; + /** + * The time window of the maintenance window + */ + type: string; + /** + * The configuration for maintenance windows occuring weekly + */ + weeklyRecurrence?: outputs.MaintenanceScheduleWeeklyRecurrence; +} + +export interface MaintenanceScheduleDailyRecurrence { + recurrenceRange: outputs.MaintenanceScheduleDailyRecurrenceRecurrenceRange; + timeWindow: outputs.MaintenanceScheduleDailyRecurrenceTimeWindow; +} + +export interface MaintenanceScheduleDailyRecurrenceRecurrenceRange { + endDate: string; + startDate: string; +} + +export interface MaintenanceScheduleDailyRecurrenceTimeWindow { + endTime: string; + startTime: string; + timeZone: string; +} + +export interface MaintenanceScheduleMonthlyRecurrence { + dayOfMonth: number; + recurrenceRange: outputs.MaintenanceScheduleMonthlyRecurrenceRecurrenceRange; + timeWindow: outputs.MaintenanceScheduleMonthlyRecurrenceTimeWindow; +} + +export interface MaintenanceScheduleMonthlyRecurrenceRecurrenceRange { + endDate: string; + startDate: string; +} + +export interface MaintenanceScheduleMonthlyRecurrenceTimeWindow { + endTime: string; + startTime: string; + timeZone: string; +} + +export interface MaintenanceScheduleOnceRecurrence { + endTime: string; + startTime: string; + timeZone: string; +} + +export interface MaintenanceScheduleWeeklyRecurrence { + dayOfWeek: string; + recurrenceRange: outputs.MaintenanceScheduleWeeklyRecurrenceRecurrenceRange; + timeWindow: outputs.MaintenanceScheduleWeeklyRecurrenceTimeWindow; +} + +export interface MaintenanceScheduleWeeklyRecurrenceRecurrenceRange { + endDate: string; + startDate: string; +} + +export interface MaintenanceScheduleWeeklyRecurrenceTimeWindow { + endTime: string; + startTime: string; + timeZone: string; +} + export interface MaintenanceWindowMetadata { /** * Dynatrace server version @@ -8387,3 +8508,35 @@ export interface WebApplicationXhrActionApdexSettings { toleratedThreshold?: number; } +export interface WebhookNotificationHeaders { + /** + * An additional HTTP Header to include when sending requests + */ + headers: outputs.WebhookNotificationHeadersHeader[]; +} + +export interface WebhookNotificationHeadersHeader { + /** + * The name of the notification configuration + */ + name: string; + secretValue?: string; + value?: string; +} + +export interface XmattersNotificationHeaders { + /** + * An additional HTTP Header to include when sending requests + */ + headers: outputs.XmattersNotificationHeadersHeader[]; +} + +export interface XmattersNotificationHeadersHeader { + /** + * The name of the notification configuration + */ + name: string; + secretValue?: string; + value?: string; +} + diff --git a/sdk/nodejs/victorOpsNotification.ts b/sdk/nodejs/victorOpsNotification.ts new file mode 100644 index 00000000..86f6c275 --- /dev/null +++ b/sdk/nodejs/victorOpsNotification.ts @@ -0,0 +1,165 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +export class VictorOpsNotification extends pulumi.CustomResource { + /** + * Get an existing VictorOpsNotification resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: VictorOpsNotificationState, opts?: pulumi.CustomResourceOptions): VictorOpsNotification { + return new VictorOpsNotification(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dynatrace:index/victorOpsNotification:VictorOpsNotification'; + + /** + * Returns true if the given object is an instance of VictorOpsNotification. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is VictorOpsNotification { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === VictorOpsNotification.__pulumiType; + } + + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + public readonly active!: pulumi.Output; + /** + * The API key for the target VictorOps account + */ + public readonly apiKey!: pulumi.Output; + /** + * The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + */ + public readonly message!: pulumi.Output; + /** + * The name of the notification configuration + */ + public readonly name!: pulumi.Output; + /** + * The ID of the associated alerting profile + */ + public readonly profile!: pulumi.Output; + /** + * The routing key, defining the group to be notified + */ + public readonly routingKey!: pulumi.Output; + + /** + * Create a VictorOpsNotification resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: VictorOpsNotificationArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: VictorOpsNotificationArgs | VictorOpsNotificationState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as VictorOpsNotificationState | undefined; + resourceInputs["active"] = state ? state.active : undefined; + resourceInputs["apiKey"] = state ? state.apiKey : undefined; + resourceInputs["message"] = state ? state.message : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["profile"] = state ? state.profile : undefined; + resourceInputs["routingKey"] = state ? state.routingKey : undefined; + } else { + const args = argsOrState as VictorOpsNotificationArgs | undefined; + if ((!args || args.active === undefined) && !opts.urn) { + throw new Error("Missing required property 'active'"); + } + if ((!args || args.message === undefined) && !opts.urn) { + throw new Error("Missing required property 'message'"); + } + if ((!args || args.profile === undefined) && !opts.urn) { + throw new Error("Missing required property 'profile'"); + } + if ((!args || args.routingKey === undefined) && !opts.urn) { + throw new Error("Missing required property 'routingKey'"); + } + resourceInputs["active"] = args ? args.active : undefined; + resourceInputs["apiKey"] = args?.apiKey ? pulumi.secret(args.apiKey) : undefined; + resourceInputs["message"] = args ? args.message : undefined; + resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["profile"] = args ? args.profile : undefined; + resourceInputs["routingKey"] = args ? args.routingKey : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + const secretOpts = { additionalSecretOutputs: ["apiKey"] }; + opts = pulumi.mergeOptions(opts, secretOpts); + super(VictorOpsNotification.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering VictorOpsNotification resources. + */ +export interface VictorOpsNotificationState { + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active?: pulumi.Input; + /** + * The API key for the target VictorOps account + */ + apiKey?: pulumi.Input; + /** + * The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + */ + message?: pulumi.Input; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile?: pulumi.Input; + /** + * The routing key, defining the group to be notified + */ + routingKey?: pulumi.Input; +} + +/** + * The set of arguments for constructing a VictorOpsNotification resource. + */ +export interface VictorOpsNotificationArgs { + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active: pulumi.Input; + /** + * The API key for the target VictorOps account + */ + apiKey?: pulumi.Input; + /** + * The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + */ + message: pulumi.Input; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile: pulumi.Input; + /** + * The routing key, defining the group to be notified + */ + routingKey: pulumi.Input; +} diff --git a/sdk/nodejs/webhookNotification.ts b/sdk/nodejs/webhookNotification.ts new file mode 100644 index 00000000..df50e011 --- /dev/null +++ b/sdk/nodejs/webhookNotification.ts @@ -0,0 +1,207 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as inputs from "./types/input"; +import * as outputs from "./types/output"; +import * as utilities from "./utilities"; + +export class WebhookNotification extends pulumi.CustomResource { + /** + * Get an existing WebhookNotification resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: WebhookNotificationState, opts?: pulumi.CustomResourceOptions): WebhookNotification { + return new WebhookNotification(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dynatrace:index/webhookNotification:WebhookNotification'; + + /** + * Returns true if the given object is an instance of WebhookNotification. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is WebhookNotification { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === WebhookNotification.__pulumiType; + } + + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + public readonly active!: pulumi.Output; + /** + * A list of the additional HTTP headers + */ + public readonly headers!: pulumi.Output; + /** + * Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + */ + public readonly insecure!: pulumi.Output; + /** + * The name of the notification configuration + */ + public readonly name!: pulumi.Output; + /** + * Send email if problem is closed + */ + public readonly notifyClosedProblems!: pulumi.Output; + /** + * Call webhook if new events merge into existing problems + */ + public readonly notifyEventMerges!: pulumi.Output; + /** + * The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + public readonly payload!: pulumi.Output; + /** + * The ID of the associated alerting profile + */ + public readonly profile!: pulumi.Output; + /** + * The URL of the WebHook endpoint + */ + public readonly url!: pulumi.Output; + + /** + * Create a WebhookNotification resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: WebhookNotificationArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: WebhookNotificationArgs | WebhookNotificationState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as WebhookNotificationState | undefined; + resourceInputs["active"] = state ? state.active : undefined; + resourceInputs["headers"] = state ? state.headers : undefined; + resourceInputs["insecure"] = state ? state.insecure : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["notifyClosedProblems"] = state ? state.notifyClosedProblems : undefined; + resourceInputs["notifyEventMerges"] = state ? state.notifyEventMerges : undefined; + resourceInputs["payload"] = state ? state.payload : undefined; + resourceInputs["profile"] = state ? state.profile : undefined; + resourceInputs["url"] = state ? state.url : undefined; + } else { + const args = argsOrState as WebhookNotificationArgs | undefined; + if ((!args || args.active === undefined) && !opts.urn) { + throw new Error("Missing required property 'active'"); + } + if ((!args || args.payload === undefined) && !opts.urn) { + throw new Error("Missing required property 'payload'"); + } + if ((!args || args.profile === undefined) && !opts.urn) { + throw new Error("Missing required property 'profile'"); + } + if ((!args || args.url === undefined) && !opts.urn) { + throw new Error("Missing required property 'url'"); + } + resourceInputs["active"] = args ? args.active : undefined; + resourceInputs["headers"] = args ? args.headers : undefined; + resourceInputs["insecure"] = args ? args.insecure : undefined; + resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["notifyClosedProblems"] = args ? args.notifyClosedProblems : undefined; + resourceInputs["notifyEventMerges"] = args ? args.notifyEventMerges : undefined; + resourceInputs["payload"] = args ? args.payload : undefined; + resourceInputs["profile"] = args ? args.profile : undefined; + resourceInputs["url"] = args ? args.url : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(WebhookNotification.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering WebhookNotification resources. + */ +export interface WebhookNotificationState { + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active?: pulumi.Input; + /** + * A list of the additional HTTP headers + */ + headers?: pulumi.Input; + /** + * Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + */ + insecure?: pulumi.Input; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * Send email if problem is closed + */ + notifyClosedProblems?: pulumi.Input; + /** + * Call webhook if new events merge into existing problems + */ + notifyEventMerges?: pulumi.Input; + /** + * The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + payload?: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile?: pulumi.Input; + /** + * The URL of the WebHook endpoint + */ + url?: pulumi.Input; +} + +/** + * The set of arguments for constructing a WebhookNotification resource. + */ +export interface WebhookNotificationArgs { + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active: pulumi.Input; + /** + * A list of the additional HTTP headers + */ + headers?: pulumi.Input; + /** + * Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + */ + insecure?: pulumi.Input; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * Send email if problem is closed + */ + notifyClosedProblems?: pulumi.Input; + /** + * Call webhook if new events merge into existing problems + */ + notifyEventMerges?: pulumi.Input; + /** + * The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + payload: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile: pulumi.Input; + /** + * The URL of the WebHook endpoint + */ + url: pulumi.Input; +} diff --git a/sdk/nodejs/xmattersNotification.ts b/sdk/nodejs/xmattersNotification.ts new file mode 100644 index 00000000..31e27453 --- /dev/null +++ b/sdk/nodejs/xmattersNotification.ts @@ -0,0 +1,179 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as inputs from "./types/input"; +import * as outputs from "./types/output"; +import * as utilities from "./utilities"; + +export class XmattersNotification extends pulumi.CustomResource { + /** + * Get an existing XmattersNotification resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: XmattersNotificationState, opts?: pulumi.CustomResourceOptions): XmattersNotification { + return new XmattersNotification(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'dynatrace:index/xmattersNotification:XmattersNotification'; + + /** + * Returns true if the given object is an instance of XmattersNotification. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is XmattersNotification { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === XmattersNotification.__pulumiType; + } + + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + public readonly active!: pulumi.Output; + /** + * A list of the additional HTTP headers + */ + public readonly headers!: pulumi.Output; + /** + * Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + */ + public readonly insecure!: pulumi.Output; + /** + * The name of the notification configuration + */ + public readonly name!: pulumi.Output; + /** + * The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + public readonly payload!: pulumi.Output; + /** + * The ID of the associated alerting profile + */ + public readonly profile!: pulumi.Output; + /** + * The URL of the WebHook endpoint + */ + public readonly url!: pulumi.Output; + + /** + * Create a XmattersNotification resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: XmattersNotificationArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: XmattersNotificationArgs | XmattersNotificationState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as XmattersNotificationState | undefined; + resourceInputs["active"] = state ? state.active : undefined; + resourceInputs["headers"] = state ? state.headers : undefined; + resourceInputs["insecure"] = state ? state.insecure : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["payload"] = state ? state.payload : undefined; + resourceInputs["profile"] = state ? state.profile : undefined; + resourceInputs["url"] = state ? state.url : undefined; + } else { + const args = argsOrState as XmattersNotificationArgs | undefined; + if ((!args || args.active === undefined) && !opts.urn) { + throw new Error("Missing required property 'active'"); + } + if ((!args || args.payload === undefined) && !opts.urn) { + throw new Error("Missing required property 'payload'"); + } + if ((!args || args.profile === undefined) && !opts.urn) { + throw new Error("Missing required property 'profile'"); + } + if ((!args || args.url === undefined) && !opts.urn) { + throw new Error("Missing required property 'url'"); + } + resourceInputs["active"] = args ? args.active : undefined; + resourceInputs["headers"] = args ? args.headers : undefined; + resourceInputs["insecure"] = args ? args.insecure : undefined; + resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["payload"] = args ? args.payload : undefined; + resourceInputs["profile"] = args ? args.profile : undefined; + resourceInputs["url"] = args ? args.url : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(XmattersNotification.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering XmattersNotification resources. + */ +export interface XmattersNotificationState { + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active?: pulumi.Input; + /** + * A list of the additional HTTP headers + */ + headers?: pulumi.Input; + /** + * Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + */ + insecure?: pulumi.Input; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + payload?: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile?: pulumi.Input; + /** + * The URL of the WebHook endpoint + */ + url?: pulumi.Input; +} + +/** + * The set of arguments for constructing a XmattersNotification resource. + */ +export interface XmattersNotificationArgs { + /** + * The configuration is enabled (`true`) or disabled (`false`) + */ + active: pulumi.Input; + /** + * A list of the additional HTTP headers + */ + headers?: pulumi.Input; + /** + * Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + */ + insecure?: pulumi.Input; + /** + * The name of the notification configuration + */ + name?: pulumi.Input; + /** + * The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + */ + payload: pulumi.Input; + /** + * The ID of the associated alerting profile + */ + profile: pulumi.Input; + /** + * The URL of the WebHook endpoint + */ + url: pulumi.Input; +} diff --git a/sdk/python/lbrlabs_pulumi_dynatrace/__init__.py b/sdk/python/lbrlabs_pulumi_dynatrace/__init__.py index c7d2ab00..5453ee0e 100644 --- a/sdk/python/lbrlabs_pulumi_dynatrace/__init__.py +++ b/sdk/python/lbrlabs_pulumi_dynatrace/__init__.py @@ -7,6 +7,7 @@ # Export this package's modules as members: from .alerting import * from .alerting_profile import * +from .ansible_tower_notification import * from .application_anomalies import * from .application_data_privacy import * from .application_detection_rule import * @@ -23,7 +24,10 @@ from .dashboard_sharing import * from .database_anomalies import * from .disk_anomalies import * +from .email_notification import * from .environment import * +from .frequent_issues import * +from .get_alerting_profile import * from .get_alerting_profiles import * from .get_application import * from .get_aws_iam_external import * @@ -40,13 +44,17 @@ from .http_monitor import * from .ibm_mq_filters import * from .ims_bridges import * +from .jira_notification import * from .k8s_credentials import * from .key_requests import * +from .maintenance import * from .maintenance_window import * from .management_zone import * from .mobile_application import * from .network_zones import * from .notification import * +from .ops_genie_notification import * +from .pager_duty_notification import * from .processgroup_naming import * from .provider import * from .queue_manager import * @@ -57,14 +65,20 @@ from .resource_attributes import * from .service_anomalies import * from .service_naming import * +from .service_now_notification import * +from .slack_notification import * from .slo import * from .span_attributed import * from .span_capture_rule import * from .span_context_propagation import * from .span_entry_point import * +from .trrello_notification import * from .user import * from .user_group import * +from .victor_ops_notification import * from .web_application import * +from .webhook_notification import * +from .xmatters_notification import * from ._inputs import * from . import outputs @@ -94,6 +108,14 @@ "dynatrace:index/alertingProfile:AlertingProfile": "AlertingProfile" } }, + { + "pkg": "dynatrace", + "mod": "index/ansibleTowerNotification", + "fqn": "lbrlabs_pulumi_dynatrace", + "classes": { + "dynatrace:index/ansibleTowerNotification:AnsibleTowerNotification": "AnsibleTowerNotification" + } + }, { "pkg": "dynatrace", "mod": "index/applicationAnomalies", @@ -222,6 +244,14 @@ "dynatrace:index/diskAnomalies:DiskAnomalies": "DiskAnomalies" } }, + { + "pkg": "dynatrace", + "mod": "index/emailNotification", + "fqn": "lbrlabs_pulumi_dynatrace", + "classes": { + "dynatrace:index/emailNotification:EmailNotification": "EmailNotification" + } + }, { "pkg": "dynatrace", "mod": "index/environment", @@ -230,6 +260,14 @@ "dynatrace:index/environment:Environment": "Environment" } }, + { + "pkg": "dynatrace", + "mod": "index/frequentIssues", + "fqn": "lbrlabs_pulumi_dynatrace", + "classes": { + "dynatrace:index/frequentIssues:FrequentIssues": "FrequentIssues" + } + }, { "pkg": "dynatrace", "mod": "index/hostAnomalies", @@ -270,6 +308,14 @@ "dynatrace:index/imsBridges:ImsBridges": "ImsBridges" } }, + { + "pkg": "dynatrace", + "mod": "index/jiraNotification", + "fqn": "lbrlabs_pulumi_dynatrace", + "classes": { + "dynatrace:index/jiraNotification:JiraNotification": "JiraNotification" + } + }, { "pkg": "dynatrace", "mod": "index/k8sCredentials", @@ -286,6 +332,14 @@ "dynatrace:index/keyRequests:KeyRequests": "KeyRequests" } }, + { + "pkg": "dynatrace", + "mod": "index/maintenance", + "fqn": "lbrlabs_pulumi_dynatrace", + "classes": { + "dynatrace:index/maintenance:Maintenance": "Maintenance" + } + }, { "pkg": "dynatrace", "mod": "index/maintenanceWindow", @@ -326,6 +380,22 @@ "dynatrace:index/notification:Notification": "Notification" } }, + { + "pkg": "dynatrace", + "mod": "index/opsGenieNotification", + "fqn": "lbrlabs_pulumi_dynatrace", + "classes": { + "dynatrace:index/opsGenieNotification:OpsGenieNotification": "OpsGenieNotification" + } + }, + { + "pkg": "dynatrace", + "mod": "index/pagerDutyNotification", + "fqn": "lbrlabs_pulumi_dynatrace", + "classes": { + "dynatrace:index/pagerDutyNotification:PagerDutyNotification": "PagerDutyNotification" + } + }, { "pkg": "dynatrace", "mod": "index/processgroupNaming", @@ -398,6 +468,22 @@ "dynatrace:index/serviceNaming:ServiceNaming": "ServiceNaming" } }, + { + "pkg": "dynatrace", + "mod": "index/serviceNowNotification", + "fqn": "lbrlabs_pulumi_dynatrace", + "classes": { + "dynatrace:index/serviceNowNotification:ServiceNowNotification": "ServiceNowNotification" + } + }, + { + "pkg": "dynatrace", + "mod": "index/slackNotification", + "fqn": "lbrlabs_pulumi_dynatrace", + "classes": { + "dynatrace:index/slackNotification:SlackNotification": "SlackNotification" + } + }, { "pkg": "dynatrace", "mod": "index/slo", @@ -438,6 +524,14 @@ "dynatrace:index/spanEntryPoint:SpanEntryPoint": "SpanEntryPoint" } }, + { + "pkg": "dynatrace", + "mod": "index/trrelloNotification", + "fqn": "lbrlabs_pulumi_dynatrace", + "classes": { + "dynatrace:index/trrelloNotification:TrrelloNotification": "TrrelloNotification" + } + }, { "pkg": "dynatrace", "mod": "index/user", @@ -454,6 +548,14 @@ "dynatrace:index/userGroup:UserGroup": "UserGroup" } }, + { + "pkg": "dynatrace", + "mod": "index/victorOpsNotification", + "fqn": "lbrlabs_pulumi_dynatrace", + "classes": { + "dynatrace:index/victorOpsNotification:VictorOpsNotification": "VictorOpsNotification" + } + }, { "pkg": "dynatrace", "mod": "index/webApplication", @@ -461,6 +563,22 @@ "classes": { "dynatrace:index/webApplication:WebApplication": "WebApplication" } + }, + { + "pkg": "dynatrace", + "mod": "index/webhookNotification", + "fqn": "lbrlabs_pulumi_dynatrace", + "classes": { + "dynatrace:index/webhookNotification:WebhookNotification": "WebhookNotification" + } + }, + { + "pkg": "dynatrace", + "mod": "index/xmattersNotification", + "fqn": "lbrlabs_pulumi_dynatrace", + "classes": { + "dynatrace:index/xmattersNotification:XmattersNotification": "XmattersNotification" + } } ] """, diff --git a/sdk/python/lbrlabs_pulumi_dynatrace/_inputs.py b/sdk/python/lbrlabs_pulumi_dynatrace/_inputs.py index 74c2e7f9..db1b5999 100644 --- a/sdk/python/lbrlabs_pulumi_dynatrace/_inputs.py +++ b/sdk/python/lbrlabs_pulumi_dynatrace/_inputs.py @@ -487,6 +487,20 @@ 'ImsBridgesQueueManagerArgs', 'ImsBridgesQueueManagerQueueManagerArgs', 'K8sCredentialsEventsFieldSelectorArgs', + 'MaintenanceFilterArgs', + 'MaintenanceFilterFilterArgs', + 'MaintenanceGeneralPropertiesArgs', + 'MaintenanceScheduleArgs', + 'MaintenanceScheduleDailyRecurrenceArgs', + 'MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs', + 'MaintenanceScheduleDailyRecurrenceTimeWindowArgs', + 'MaintenanceScheduleMonthlyRecurrenceArgs', + 'MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs', + 'MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs', + 'MaintenanceScheduleOnceRecurrenceArgs', + 'MaintenanceScheduleWeeklyRecurrenceArgs', + 'MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs', + 'MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs', 'MaintenanceWindowMetadataArgs', 'MaintenanceWindowScheduleArgs', 'MaintenanceWindowScheduleRecurrenceArgs', @@ -871,6 +885,10 @@ 'WebApplicationUserTagsTagArgs', 'WebApplicationWaterfallSettingsArgs', 'WebApplicationXhrActionApdexSettingsArgs', + 'WebhookNotificationHeadersArgs', + 'WebhookNotificationHeadersHeaderArgs', + 'XmattersNotificationHeadersArgs', + 'XmattersNotificationHeadersHeaderArgs', 'GetSyntheticLocationsLocationsArgs', 'GetSyntheticLocationsLocationsLocationArgs', ] @@ -2626,11 +2644,14 @@ def url(self, value: Optional[pulumi.Input[str]]): class AutotagEntitySelectorBasedRuleArgs: def __init__(__self__, *, enabled: Optional[pulumi.Input[bool]] = None, + normalization: Optional[pulumi.Input[str]] = None, selector: Optional[pulumi.Input[str]] = None, unknowns: Optional[pulumi.Input[str]] = None, value_format: Optional[pulumi.Input[str]] = None): if enabled is not None: pulumi.set(__self__, "enabled", enabled) + if normalization is not None: + pulumi.set(__self__, "normalization", normalization) if selector is not None: pulumi.set(__self__, "selector", selector) if unknowns is not None: @@ -2647,6 +2668,15 @@ def enabled(self) -> Optional[pulumi.Input[bool]]: def enabled(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "enabled", value) + @property + @pulumi.getter + def normalization(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "normalization") + + @normalization.setter + def normalization(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "normalization", value) + @property @pulumi.getter def selector(self) -> Optional[pulumi.Input[str]]: @@ -15767,6 +15797,7 @@ def __init__(__self__, *, consistent_colors: Optional[pulumi.Input[bool]] = None, dynamic_filters: Optional[pulumi.Input['DashboardDashboardMetadataDynamicFiltersArgs']] = None, filter: Optional[pulumi.Input['DashboardDashboardMetadataFilterArgs']] = None, + preset: Optional[pulumi.Input[bool]] = None, shared: Optional[pulumi.Input[bool]] = None, sharing_details: Optional[pulumi.Input['DashboardDashboardMetadataSharingDetailsArgs']] = None, tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, @@ -15778,6 +15809,7 @@ def __init__(__self__, *, :param pulumi.Input[bool] consistent_colors: The tile uses consistent colors when rendering its content :param pulumi.Input['DashboardDashboardMetadataDynamicFiltersArgs'] dynamic_filters: Dashboard filter configuration of a dashboard :param pulumi.Input['DashboardDashboardMetadataFilterArgs'] filter: Global filter Settings for the Dashboard + :param pulumi.Input[bool] preset: the dashboard is a preset (`true`) or not (`false`). Default is `false`. :param pulumi.Input[bool] shared: the dashboard is shared (`true`) or private (`false`) :param pulumi.Input['DashboardDashboardMetadataSharingDetailsArgs'] sharing_details: represents sharing configuration of a dashboard :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: a set of tags assigned to the dashboard @@ -15792,6 +15824,8 @@ def __init__(__self__, *, pulumi.set(__self__, "dynamic_filters", dynamic_filters) if filter is not None: pulumi.set(__self__, "filter", filter) + if preset is not None: + pulumi.set(__self__, "preset", preset) if shared is not None: pulumi.set(__self__, "shared", shared) if sharing_details is not None: @@ -15863,6 +15897,18 @@ def filter(self) -> Optional[pulumi.Input['DashboardDashboardMetadataFilterArgs' def filter(self, value: Optional[pulumi.Input['DashboardDashboardMetadataFilterArgs']]): pulumi.set(self, "filter", value) + @property + @pulumi.getter + def preset(self) -> Optional[pulumi.Input[bool]]: + """ + the dashboard is a preset (`true`) or not (`false`). Default is `false`. + """ + return pulumi.get(self, "preset") + + @preset.setter + def preset(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "preset", value) + @property @pulumi.getter def shared(self) -> Optional[pulumi.Input[bool]]: @@ -25092,6 +25138,588 @@ def unknowns(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "unknowns", value) +@pulumi.input_type +class MaintenanceFilterArgs: + def __init__(__self__, *, + filters: Optional[pulumi.Input[Sequence[pulumi.Input['MaintenanceFilterFilterArgs']]]] = None): + """ + :param pulumi.Input[Sequence[pulumi.Input['MaintenanceFilterFilterArgs']]] filters: A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies + """ + if filters is not None: + pulumi.set(__self__, "filters", filters) + + @property + @pulumi.getter + def filters(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['MaintenanceFilterFilterArgs']]]]: + """ + A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies + """ + return pulumi.get(self, "filters") + + @filters.setter + def filters(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['MaintenanceFilterFilterArgs']]]]): + pulumi.set(self, "filters", value) + + +@pulumi.input_type +class MaintenanceFilterFilterArgs: + def __init__(__self__, *, + entity_id: Optional[pulumi.Input[str]] = None, + entity_tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + entity_type: Optional[pulumi.Input[str]] = None, + management_zones: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None): + if entity_id is not None: + pulumi.set(__self__, "entity_id", entity_id) + if entity_tags is not None: + pulumi.set(__self__, "entity_tags", entity_tags) + if entity_type is not None: + pulumi.set(__self__, "entity_type", entity_type) + if management_zones is not None: + pulumi.set(__self__, "management_zones", management_zones) + + @property + @pulumi.getter(name="entityId") + def entity_id(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "entity_id") + + @entity_id.setter + def entity_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "entity_id", value) + + @property + @pulumi.getter(name="entityTags") + def entity_tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + return pulumi.get(self, "entity_tags") + + @entity_tags.setter + def entity_tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "entity_tags", value) + + @property + @pulumi.getter(name="entityType") + def entity_type(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "entity_type") + + @entity_type.setter + def entity_type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "entity_type", value) + + @property + @pulumi.getter(name="managementZones") + def management_zones(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + return pulumi.get(self, "management_zones") + + @management_zones.setter + def management_zones(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "management_zones", value) + + +@pulumi.input_type +class MaintenanceGeneralPropertiesArgs: + def __init__(__self__, *, + name: pulumi.Input[str], + suppression: pulumi.Input[str], + type: pulumi.Input[str], + description: Optional[pulumi.Input[str]] = None, + disable_synthetic: Optional[pulumi.Input[bool]] = None): + """ + :param pulumi.Input[str] name: The name of the maintenance window, displayed in the UI + :param pulumi.Input[str] suppression: The type of suppression of alerting and problem detection during the maintenance + :param pulumi.Input[str] type: The type of the maintenance: planned or unplanned + :param pulumi.Input[str] description: A short description of the maintenance purpose + :param pulumi.Input[bool] disable_synthetic: Suppress execution of synthetic monitors during the maintenance + """ + pulumi.set(__self__, "name", name) + pulumi.set(__self__, "suppression", suppression) + pulumi.set(__self__, "type", type) + if description is not None: + pulumi.set(__self__, "description", description) + if disable_synthetic is not None: + pulumi.set(__self__, "disable_synthetic", disable_synthetic) + + @property + @pulumi.getter + def name(self) -> pulumi.Input[str]: + """ + The name of the maintenance window, displayed in the UI + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[str]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def suppression(self) -> pulumi.Input[str]: + """ + The type of suppression of alerting and problem detection during the maintenance + """ + return pulumi.get(self, "suppression") + + @suppression.setter + def suppression(self, value: pulumi.Input[str]): + pulumi.set(self, "suppression", value) + + @property + @pulumi.getter + def type(self) -> pulumi.Input[str]: + """ + The type of the maintenance: planned or unplanned + """ + return pulumi.get(self, "type") + + @type.setter + def type(self, value: pulumi.Input[str]): + pulumi.set(self, "type", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + A short description of the maintenance purpose + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter(name="disableSynthetic") + def disable_synthetic(self) -> Optional[pulumi.Input[bool]]: + """ + Suppress execution of synthetic monitors during the maintenance + """ + return pulumi.get(self, "disable_synthetic") + + @disable_synthetic.setter + def disable_synthetic(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "disable_synthetic", value) + + +@pulumi.input_type +class MaintenanceScheduleArgs: + def __init__(__self__, *, + type: pulumi.Input[str], + daily_recurrence: Optional[pulumi.Input['MaintenanceScheduleDailyRecurrenceArgs']] = None, + monthly_recurrence: Optional[pulumi.Input['MaintenanceScheduleMonthlyRecurrenceArgs']] = None, + once_recurrence: Optional[pulumi.Input['MaintenanceScheduleOnceRecurrenceArgs']] = None, + weekly_recurrence: Optional[pulumi.Input['MaintenanceScheduleWeeklyRecurrenceArgs']] = None): + """ + :param pulumi.Input[str] type: The time window of the maintenance window + :param pulumi.Input['MaintenanceScheduleDailyRecurrenceArgs'] daily_recurrence: The configuration for maintenance windows occuring daily + :param pulumi.Input['MaintenanceScheduleMonthlyRecurrenceArgs'] monthly_recurrence: The configuration for maintenance windows occuring monthly + :param pulumi.Input['MaintenanceScheduleOnceRecurrenceArgs'] once_recurrence: The configuration for maintenance windows occuring once + :param pulumi.Input['MaintenanceScheduleWeeklyRecurrenceArgs'] weekly_recurrence: The configuration for maintenance windows occuring weekly + """ + pulumi.set(__self__, "type", type) + if daily_recurrence is not None: + pulumi.set(__self__, "daily_recurrence", daily_recurrence) + if monthly_recurrence is not None: + pulumi.set(__self__, "monthly_recurrence", monthly_recurrence) + if once_recurrence is not None: + pulumi.set(__self__, "once_recurrence", once_recurrence) + if weekly_recurrence is not None: + pulumi.set(__self__, "weekly_recurrence", weekly_recurrence) + + @property + @pulumi.getter + def type(self) -> pulumi.Input[str]: + """ + The time window of the maintenance window + """ + return pulumi.get(self, "type") + + @type.setter + def type(self, value: pulumi.Input[str]): + pulumi.set(self, "type", value) + + @property + @pulumi.getter(name="dailyRecurrence") + def daily_recurrence(self) -> Optional[pulumi.Input['MaintenanceScheduleDailyRecurrenceArgs']]: + """ + The configuration for maintenance windows occuring daily + """ + return pulumi.get(self, "daily_recurrence") + + @daily_recurrence.setter + def daily_recurrence(self, value: Optional[pulumi.Input['MaintenanceScheduleDailyRecurrenceArgs']]): + pulumi.set(self, "daily_recurrence", value) + + @property + @pulumi.getter(name="monthlyRecurrence") + def monthly_recurrence(self) -> Optional[pulumi.Input['MaintenanceScheduleMonthlyRecurrenceArgs']]: + """ + The configuration for maintenance windows occuring monthly + """ + return pulumi.get(self, "monthly_recurrence") + + @monthly_recurrence.setter + def monthly_recurrence(self, value: Optional[pulumi.Input['MaintenanceScheduleMonthlyRecurrenceArgs']]): + pulumi.set(self, "monthly_recurrence", value) + + @property + @pulumi.getter(name="onceRecurrence") + def once_recurrence(self) -> Optional[pulumi.Input['MaintenanceScheduleOnceRecurrenceArgs']]: + """ + The configuration for maintenance windows occuring once + """ + return pulumi.get(self, "once_recurrence") + + @once_recurrence.setter + def once_recurrence(self, value: Optional[pulumi.Input['MaintenanceScheduleOnceRecurrenceArgs']]): + pulumi.set(self, "once_recurrence", value) + + @property + @pulumi.getter(name="weeklyRecurrence") + def weekly_recurrence(self) -> Optional[pulumi.Input['MaintenanceScheduleWeeklyRecurrenceArgs']]: + """ + The configuration for maintenance windows occuring weekly + """ + return pulumi.get(self, "weekly_recurrence") + + @weekly_recurrence.setter + def weekly_recurrence(self, value: Optional[pulumi.Input['MaintenanceScheduleWeeklyRecurrenceArgs']]): + pulumi.set(self, "weekly_recurrence", value) + + +@pulumi.input_type +class MaintenanceScheduleDailyRecurrenceArgs: + def __init__(__self__, *, + recurrence_range: pulumi.Input['MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs'], + time_window: pulumi.Input['MaintenanceScheduleDailyRecurrenceTimeWindowArgs']): + pulumi.set(__self__, "recurrence_range", recurrence_range) + pulumi.set(__self__, "time_window", time_window) + + @property + @pulumi.getter(name="recurrenceRange") + def recurrence_range(self) -> pulumi.Input['MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs']: + return pulumi.get(self, "recurrence_range") + + @recurrence_range.setter + def recurrence_range(self, value: pulumi.Input['MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs']): + pulumi.set(self, "recurrence_range", value) + + @property + @pulumi.getter(name="timeWindow") + def time_window(self) -> pulumi.Input['MaintenanceScheduleDailyRecurrenceTimeWindowArgs']: + return pulumi.get(self, "time_window") + + @time_window.setter + def time_window(self, value: pulumi.Input['MaintenanceScheduleDailyRecurrenceTimeWindowArgs']): + pulumi.set(self, "time_window", value) + + +@pulumi.input_type +class MaintenanceScheduleDailyRecurrenceRecurrenceRangeArgs: + def __init__(__self__, *, + end_date: pulumi.Input[str], + start_date: pulumi.Input[str]): + pulumi.set(__self__, "end_date", end_date) + pulumi.set(__self__, "start_date", start_date) + + @property + @pulumi.getter(name="endDate") + def end_date(self) -> pulumi.Input[str]: + return pulumi.get(self, "end_date") + + @end_date.setter + def end_date(self, value: pulumi.Input[str]): + pulumi.set(self, "end_date", value) + + @property + @pulumi.getter(name="startDate") + def start_date(self) -> pulumi.Input[str]: + return pulumi.get(self, "start_date") + + @start_date.setter + def start_date(self, value: pulumi.Input[str]): + pulumi.set(self, "start_date", value) + + +@pulumi.input_type +class MaintenanceScheduleDailyRecurrenceTimeWindowArgs: + def __init__(__self__, *, + end_time: pulumi.Input[str], + start_time: pulumi.Input[str], + time_zone: pulumi.Input[str]): + pulumi.set(__self__, "end_time", end_time) + pulumi.set(__self__, "start_time", start_time) + pulumi.set(__self__, "time_zone", time_zone) + + @property + @pulumi.getter(name="endTime") + def end_time(self) -> pulumi.Input[str]: + return pulumi.get(self, "end_time") + + @end_time.setter + def end_time(self, value: pulumi.Input[str]): + pulumi.set(self, "end_time", value) + + @property + @pulumi.getter(name="startTime") + def start_time(self) -> pulumi.Input[str]: + return pulumi.get(self, "start_time") + + @start_time.setter + def start_time(self, value: pulumi.Input[str]): + pulumi.set(self, "start_time", value) + + @property + @pulumi.getter(name="timeZone") + def time_zone(self) -> pulumi.Input[str]: + return pulumi.get(self, "time_zone") + + @time_zone.setter + def time_zone(self, value: pulumi.Input[str]): + pulumi.set(self, "time_zone", value) + + +@pulumi.input_type +class MaintenanceScheduleMonthlyRecurrenceArgs: + def __init__(__self__, *, + day_of_month: pulumi.Input[int], + recurrence_range: pulumi.Input['MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs'], + time_window: pulumi.Input['MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs']): + pulumi.set(__self__, "day_of_month", day_of_month) + pulumi.set(__self__, "recurrence_range", recurrence_range) + pulumi.set(__self__, "time_window", time_window) + + @property + @pulumi.getter(name="dayOfMonth") + def day_of_month(self) -> pulumi.Input[int]: + return pulumi.get(self, "day_of_month") + + @day_of_month.setter + def day_of_month(self, value: pulumi.Input[int]): + pulumi.set(self, "day_of_month", value) + + @property + @pulumi.getter(name="recurrenceRange") + def recurrence_range(self) -> pulumi.Input['MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs']: + return pulumi.get(self, "recurrence_range") + + @recurrence_range.setter + def recurrence_range(self, value: pulumi.Input['MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs']): + pulumi.set(self, "recurrence_range", value) + + @property + @pulumi.getter(name="timeWindow") + def time_window(self) -> pulumi.Input['MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs']: + return pulumi.get(self, "time_window") + + @time_window.setter + def time_window(self, value: pulumi.Input['MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs']): + pulumi.set(self, "time_window", value) + + +@pulumi.input_type +class MaintenanceScheduleMonthlyRecurrenceRecurrenceRangeArgs: + def __init__(__self__, *, + end_date: pulumi.Input[str], + start_date: pulumi.Input[str]): + pulumi.set(__self__, "end_date", end_date) + pulumi.set(__self__, "start_date", start_date) + + @property + @pulumi.getter(name="endDate") + def end_date(self) -> pulumi.Input[str]: + return pulumi.get(self, "end_date") + + @end_date.setter + def end_date(self, value: pulumi.Input[str]): + pulumi.set(self, "end_date", value) + + @property + @pulumi.getter(name="startDate") + def start_date(self) -> pulumi.Input[str]: + return pulumi.get(self, "start_date") + + @start_date.setter + def start_date(self, value: pulumi.Input[str]): + pulumi.set(self, "start_date", value) + + +@pulumi.input_type +class MaintenanceScheduleMonthlyRecurrenceTimeWindowArgs: + def __init__(__self__, *, + end_time: pulumi.Input[str], + start_time: pulumi.Input[str], + time_zone: pulumi.Input[str]): + pulumi.set(__self__, "end_time", end_time) + pulumi.set(__self__, "start_time", start_time) + pulumi.set(__self__, "time_zone", time_zone) + + @property + @pulumi.getter(name="endTime") + def end_time(self) -> pulumi.Input[str]: + return pulumi.get(self, "end_time") + + @end_time.setter + def end_time(self, value: pulumi.Input[str]): + pulumi.set(self, "end_time", value) + + @property + @pulumi.getter(name="startTime") + def start_time(self) -> pulumi.Input[str]: + return pulumi.get(self, "start_time") + + @start_time.setter + def start_time(self, value: pulumi.Input[str]): + pulumi.set(self, "start_time", value) + + @property + @pulumi.getter(name="timeZone") + def time_zone(self) -> pulumi.Input[str]: + return pulumi.get(self, "time_zone") + + @time_zone.setter + def time_zone(self, value: pulumi.Input[str]): + pulumi.set(self, "time_zone", value) + + +@pulumi.input_type +class MaintenanceScheduleOnceRecurrenceArgs: + def __init__(__self__, *, + end_time: pulumi.Input[str], + start_time: pulumi.Input[str], + time_zone: pulumi.Input[str]): + pulumi.set(__self__, "end_time", end_time) + pulumi.set(__self__, "start_time", start_time) + pulumi.set(__self__, "time_zone", time_zone) + + @property + @pulumi.getter(name="endTime") + def end_time(self) -> pulumi.Input[str]: + return pulumi.get(self, "end_time") + + @end_time.setter + def end_time(self, value: pulumi.Input[str]): + pulumi.set(self, "end_time", value) + + @property + @pulumi.getter(name="startTime") + def start_time(self) -> pulumi.Input[str]: + return pulumi.get(self, "start_time") + + @start_time.setter + def start_time(self, value: pulumi.Input[str]): + pulumi.set(self, "start_time", value) + + @property + @pulumi.getter(name="timeZone") + def time_zone(self) -> pulumi.Input[str]: + return pulumi.get(self, "time_zone") + + @time_zone.setter + def time_zone(self, value: pulumi.Input[str]): + pulumi.set(self, "time_zone", value) + + +@pulumi.input_type +class MaintenanceScheduleWeeklyRecurrenceArgs: + def __init__(__self__, *, + day_of_week: pulumi.Input[str], + recurrence_range: pulumi.Input['MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs'], + time_window: pulumi.Input['MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs']): + pulumi.set(__self__, "day_of_week", day_of_week) + pulumi.set(__self__, "recurrence_range", recurrence_range) + pulumi.set(__self__, "time_window", time_window) + + @property + @pulumi.getter(name="dayOfWeek") + def day_of_week(self) -> pulumi.Input[str]: + return pulumi.get(self, "day_of_week") + + @day_of_week.setter + def day_of_week(self, value: pulumi.Input[str]): + pulumi.set(self, "day_of_week", value) + + @property + @pulumi.getter(name="recurrenceRange") + def recurrence_range(self) -> pulumi.Input['MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs']: + return pulumi.get(self, "recurrence_range") + + @recurrence_range.setter + def recurrence_range(self, value: pulumi.Input['MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs']): + pulumi.set(self, "recurrence_range", value) + + @property + @pulumi.getter(name="timeWindow") + def time_window(self) -> pulumi.Input['MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs']: + return pulumi.get(self, "time_window") + + @time_window.setter + def time_window(self, value: pulumi.Input['MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs']): + pulumi.set(self, "time_window", value) + + +@pulumi.input_type +class MaintenanceScheduleWeeklyRecurrenceRecurrenceRangeArgs: + def __init__(__self__, *, + end_date: pulumi.Input[str], + start_date: pulumi.Input[str]): + pulumi.set(__self__, "end_date", end_date) + pulumi.set(__self__, "start_date", start_date) + + @property + @pulumi.getter(name="endDate") + def end_date(self) -> pulumi.Input[str]: + return pulumi.get(self, "end_date") + + @end_date.setter + def end_date(self, value: pulumi.Input[str]): + pulumi.set(self, "end_date", value) + + @property + @pulumi.getter(name="startDate") + def start_date(self) -> pulumi.Input[str]: + return pulumi.get(self, "start_date") + + @start_date.setter + def start_date(self, value: pulumi.Input[str]): + pulumi.set(self, "start_date", value) + + +@pulumi.input_type +class MaintenanceScheduleWeeklyRecurrenceTimeWindowArgs: + def __init__(__self__, *, + end_time: pulumi.Input[str], + start_time: pulumi.Input[str], + time_zone: pulumi.Input[str]): + pulumi.set(__self__, "end_time", end_time) + pulumi.set(__self__, "start_time", start_time) + pulumi.set(__self__, "time_zone", time_zone) + + @property + @pulumi.getter(name="endTime") + def end_time(self) -> pulumi.Input[str]: + return pulumi.get(self, "end_time") + + @end_time.setter + def end_time(self, value: pulumi.Input[str]): + pulumi.set(self, "end_time", value) + + @property + @pulumi.getter(name="startTime") + def start_time(self) -> pulumi.Input[str]: + return pulumi.get(self, "start_time") + + @start_time.setter + def start_time(self, value: pulumi.Input[str]): + pulumi.set(self, "start_time", value) + + @property + @pulumi.getter(name="timeZone") + def time_zone(self) -> pulumi.Input[str]: + return pulumi.get(self, "time_zone") + + @time_zone.setter + def time_zone(self, value: pulumi.Input[str]): + pulumi.set(self, "time_zone", value) + + @pulumi.input_type class MaintenanceWindowMetadataArgs: def __init__(__self__, *, @@ -49858,6 +50486,142 @@ def tolerated_threshold(self, value: Optional[pulumi.Input[int]]): pulumi.set(self, "tolerated_threshold", value) +@pulumi.input_type +class WebhookNotificationHeadersArgs: + def __init__(__self__, *, + headers: pulumi.Input[Sequence[pulumi.Input['WebhookNotificationHeadersHeaderArgs']]]): + """ + :param pulumi.Input[Sequence[pulumi.Input['WebhookNotificationHeadersHeaderArgs']]] headers: An additional HTTP Header to include when sending requests + """ + pulumi.set(__self__, "headers", headers) + + @property + @pulumi.getter + def headers(self) -> pulumi.Input[Sequence[pulumi.Input['WebhookNotificationHeadersHeaderArgs']]]: + """ + An additional HTTP Header to include when sending requests + """ + return pulumi.get(self, "headers") + + @headers.setter + def headers(self, value: pulumi.Input[Sequence[pulumi.Input['WebhookNotificationHeadersHeaderArgs']]]): + pulumi.set(self, "headers", value) + + +@pulumi.input_type +class WebhookNotificationHeadersHeaderArgs: + def __init__(__self__, *, + name: pulumi.Input[str], + secret_value: Optional[pulumi.Input[str]] = None, + value: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] name: The name of the notification configuration + """ + pulumi.set(__self__, "name", name) + if secret_value is not None: + pulumi.set(__self__, "secret_value", secret_value) + if value is not None: + pulumi.set(__self__, "value", value) + + @property + @pulumi.getter + def name(self) -> pulumi.Input[str]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[str]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="secretValue") + def secret_value(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "secret_value") + + @secret_value.setter + def secret_value(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "secret_value", value) + + @property + @pulumi.getter + def value(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "value") + + @value.setter + def value(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "value", value) + + +@pulumi.input_type +class XmattersNotificationHeadersArgs: + def __init__(__self__, *, + headers: pulumi.Input[Sequence[pulumi.Input['XmattersNotificationHeadersHeaderArgs']]]): + """ + :param pulumi.Input[Sequence[pulumi.Input['XmattersNotificationHeadersHeaderArgs']]] headers: An additional HTTP Header to include when sending requests + """ + pulumi.set(__self__, "headers", headers) + + @property + @pulumi.getter + def headers(self) -> pulumi.Input[Sequence[pulumi.Input['XmattersNotificationHeadersHeaderArgs']]]: + """ + An additional HTTP Header to include when sending requests + """ + return pulumi.get(self, "headers") + + @headers.setter + def headers(self, value: pulumi.Input[Sequence[pulumi.Input['XmattersNotificationHeadersHeaderArgs']]]): + pulumi.set(self, "headers", value) + + +@pulumi.input_type +class XmattersNotificationHeadersHeaderArgs: + def __init__(__self__, *, + name: pulumi.Input[str], + secret_value: Optional[pulumi.Input[str]] = None, + value: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] name: The name of the notification configuration + """ + pulumi.set(__self__, "name", name) + if secret_value is not None: + pulumi.set(__self__, "secret_value", secret_value) + if value is not None: + pulumi.set(__self__, "value", value) + + @property + @pulumi.getter + def name(self) -> pulumi.Input[str]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[str]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="secretValue") + def secret_value(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "secret_value") + + @secret_value.setter + def secret_value(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "secret_value", value) + + @property + @pulumi.getter + def value(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "value") + + @value.setter + def value(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "value", value) + + @pulumi.input_type class GetSyntheticLocationsLocationsArgs: def __init__(__self__, *, diff --git a/sdk/python/lbrlabs_pulumi_dynatrace/ansible_tower_notification.py b/sdk/python/lbrlabs_pulumi_dynatrace/ansible_tower_notification.py new file mode 100644 index 00000000..7212168b --- /dev/null +++ b/sdk/python/lbrlabs_pulumi_dynatrace/ansible_tower_notification.py @@ -0,0 +1,478 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = ['AnsibleTowerNotificationArgs', 'AnsibleTowerNotification'] + +@pulumi.input_type +class AnsibleTowerNotificationArgs: + def __init__(__self__, *, + custom_message: pulumi.Input[str], + job_template_url: pulumi.Input[str], + profile: pulumi.Input[str], + username: pulumi.Input[str], + active: Optional[pulumi.Input[bool]] = None, + insecure: Optional[pulumi.Input[bool]] = None, + name: Optional[pulumi.Input[str]] = None, + password: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a AnsibleTowerNotification resource. + :param pulumi.Input[str] custom_message: The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] job_template_url: The URL of the target Ansible Tower job template + :param pulumi.Input[str] profile: The ID of the associated alerting profile. + :param pulumi.Input[str] username: The username of the Ansible Tower account + :param pulumi.Input[bool] active: The notification is active (`true`) or inactive (`false`). Default is `false`. + :param pulumi.Input[bool] insecure: Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + :param pulumi.Input[str] name: The display name within the Dynatrace WebUI. + :param pulumi.Input[str] password: The password for the Ansible Tower account + """ + pulumi.set(__self__, "custom_message", custom_message) + pulumi.set(__self__, "job_template_url", job_template_url) + pulumi.set(__self__, "profile", profile) + pulumi.set(__self__, "username", username) + if active is not None: + pulumi.set(__self__, "active", active) + if insecure is not None: + pulumi.set(__self__, "insecure", insecure) + if name is not None: + pulumi.set(__self__, "name", name) + if password is not None: + pulumi.set(__self__, "password", password) + + @property + @pulumi.getter(name="customMessage") + def custom_message(self) -> pulumi.Input[str]: + """ + The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "custom_message") + + @custom_message.setter + def custom_message(self, value: pulumi.Input[str]): + pulumi.set(self, "custom_message", value) + + @property + @pulumi.getter(name="jobTemplateUrl") + def job_template_url(self) -> pulumi.Input[str]: + """ + The URL of the target Ansible Tower job template + """ + return pulumi.get(self, "job_template_url") + + @job_template_url.setter + def job_template_url(self, value: pulumi.Input[str]): + pulumi.set(self, "job_template_url", value) + + @property + @pulumi.getter + def profile(self) -> pulumi.Input[str]: + """ + The ID of the associated alerting profile. + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: pulumi.Input[str]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter + def username(self) -> pulumi.Input[str]: + """ + The username of the Ansible Tower account + """ + return pulumi.get(self, "username") + + @username.setter + def username(self, value: pulumi.Input[str]): + pulumi.set(self, "username", value) + + @property + @pulumi.getter + def active(self) -> Optional[pulumi.Input[bool]]: + """ + The notification is active (`true`) or inactive (`false`). Default is `false`. + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter + def insecure(self) -> Optional[pulumi.Input[bool]]: + """ + Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + """ + return pulumi.get(self, "insecure") + + @insecure.setter + def insecure(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "insecure", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The display name within the Dynatrace WebUI. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def password(self) -> Optional[pulumi.Input[str]]: + """ + The password for the Ansible Tower account + """ + return pulumi.get(self, "password") + + @password.setter + def password(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "password", value) + + +@pulumi.input_type +class _AnsibleTowerNotificationState: + def __init__(__self__, *, + active: Optional[pulumi.Input[bool]] = None, + custom_message: Optional[pulumi.Input[str]] = None, + insecure: Optional[pulumi.Input[bool]] = None, + job_template_url: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + password: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + username: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering AnsibleTowerNotification resources. + :param pulumi.Input[bool] active: The notification is active (`true`) or inactive (`false`). Default is `false`. + :param pulumi.Input[str] custom_message: The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[bool] insecure: Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + :param pulumi.Input[str] job_template_url: The URL of the target Ansible Tower job template + :param pulumi.Input[str] name: The display name within the Dynatrace WebUI. + :param pulumi.Input[str] password: The password for the Ansible Tower account + :param pulumi.Input[str] profile: The ID of the associated alerting profile. + :param pulumi.Input[str] username: The username of the Ansible Tower account + """ + if active is not None: + pulumi.set(__self__, "active", active) + if custom_message is not None: + pulumi.set(__self__, "custom_message", custom_message) + if insecure is not None: + pulumi.set(__self__, "insecure", insecure) + if job_template_url is not None: + pulumi.set(__self__, "job_template_url", job_template_url) + if name is not None: + pulumi.set(__self__, "name", name) + if password is not None: + pulumi.set(__self__, "password", password) + if profile is not None: + pulumi.set(__self__, "profile", profile) + if username is not None: + pulumi.set(__self__, "username", username) + + @property + @pulumi.getter + def active(self) -> Optional[pulumi.Input[bool]]: + """ + The notification is active (`true`) or inactive (`false`). Default is `false`. + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter(name="customMessage") + def custom_message(self) -> Optional[pulumi.Input[str]]: + """ + The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "custom_message") + + @custom_message.setter + def custom_message(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "custom_message", value) + + @property + @pulumi.getter + def insecure(self) -> Optional[pulumi.Input[bool]]: + """ + Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + """ + return pulumi.get(self, "insecure") + + @insecure.setter + def insecure(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "insecure", value) + + @property + @pulumi.getter(name="jobTemplateUrl") + def job_template_url(self) -> Optional[pulumi.Input[str]]: + """ + The URL of the target Ansible Tower job template + """ + return pulumi.get(self, "job_template_url") + + @job_template_url.setter + def job_template_url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "job_template_url", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The display name within the Dynatrace WebUI. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def password(self) -> Optional[pulumi.Input[str]]: + """ + The password for the Ansible Tower account + """ + return pulumi.get(self, "password") + + @password.setter + def password(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "password", value) + + @property + @pulumi.getter + def profile(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the associated alerting profile. + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter + def username(self) -> Optional[pulumi.Input[str]]: + """ + The username of the Ansible Tower account + """ + return pulumi.get(self, "username") + + @username.setter + def username(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "username", value) + + +class AnsibleTowerNotification(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + custom_message: Optional[pulumi.Input[str]] = None, + insecure: Optional[pulumi.Input[bool]] = None, + job_template_url: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + password: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + username: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + Create a AnsibleTowerNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The notification is active (`true`) or inactive (`false`). Default is `false`. + :param pulumi.Input[str] custom_message: The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[bool] insecure: Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + :param pulumi.Input[str] job_template_url: The URL of the target Ansible Tower job template + :param pulumi.Input[str] name: The display name within the Dynatrace WebUI. + :param pulumi.Input[str] password: The password for the Ansible Tower account + :param pulumi.Input[str] profile: The ID of the associated alerting profile. + :param pulumi.Input[str] username: The username of the Ansible Tower account + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: AnsibleTowerNotificationArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Create a AnsibleTowerNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param AnsibleTowerNotificationArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(AnsibleTowerNotificationArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + custom_message: Optional[pulumi.Input[str]] = None, + insecure: Optional[pulumi.Input[bool]] = None, + job_template_url: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + password: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + username: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = AnsibleTowerNotificationArgs.__new__(AnsibleTowerNotificationArgs) + + __props__.__dict__["active"] = active + if custom_message is None and not opts.urn: + raise TypeError("Missing required property 'custom_message'") + __props__.__dict__["custom_message"] = custom_message + __props__.__dict__["insecure"] = insecure + if job_template_url is None and not opts.urn: + raise TypeError("Missing required property 'job_template_url'") + __props__.__dict__["job_template_url"] = job_template_url + __props__.__dict__["name"] = name + __props__.__dict__["password"] = None if password is None else pulumi.Output.secret(password) + if profile is None and not opts.urn: + raise TypeError("Missing required property 'profile'") + __props__.__dict__["profile"] = profile + if username is None and not opts.urn: + raise TypeError("Missing required property 'username'") + __props__.__dict__["username"] = username + secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["password"]) + opts = pulumi.ResourceOptions.merge(opts, secret_opts) + super(AnsibleTowerNotification, __self__).__init__( + 'dynatrace:index/ansibleTowerNotification:AnsibleTowerNotification', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + custom_message: Optional[pulumi.Input[str]] = None, + insecure: Optional[pulumi.Input[bool]] = None, + job_template_url: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + password: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + username: Optional[pulumi.Input[str]] = None) -> 'AnsibleTowerNotification': + """ + Get an existing AnsibleTowerNotification resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The notification is active (`true`) or inactive (`false`). Default is `false`. + :param pulumi.Input[str] custom_message: The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[bool] insecure: Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + :param pulumi.Input[str] job_template_url: The URL of the target Ansible Tower job template + :param pulumi.Input[str] name: The display name within the Dynatrace WebUI. + :param pulumi.Input[str] password: The password for the Ansible Tower account + :param pulumi.Input[str] profile: The ID of the associated alerting profile. + :param pulumi.Input[str] username: The username of the Ansible Tower account + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _AnsibleTowerNotificationState.__new__(_AnsibleTowerNotificationState) + + __props__.__dict__["active"] = active + __props__.__dict__["custom_message"] = custom_message + __props__.__dict__["insecure"] = insecure + __props__.__dict__["job_template_url"] = job_template_url + __props__.__dict__["name"] = name + __props__.__dict__["password"] = password + __props__.__dict__["profile"] = profile + __props__.__dict__["username"] = username + return AnsibleTowerNotification(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def active(self) -> pulumi.Output[Optional[bool]]: + """ + The notification is active (`true`) or inactive (`false`). Default is `false`. + """ + return pulumi.get(self, "active") + + @property + @pulumi.getter(name="customMessage") + def custom_message(self) -> pulumi.Output[str]: + """ + The custom message of the notification. This message will be displayed in the extra variables **Message** field of your job template. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "custom_message") + + @property + @pulumi.getter + def insecure(self) -> pulumi.Output[Optional[bool]]: + """ + Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates. Default is `false`. + """ + return pulumi.get(self, "insecure") + + @property + @pulumi.getter(name="jobTemplateUrl") + def job_template_url(self) -> pulumi.Output[str]: + """ + The URL of the target Ansible Tower job template + """ + return pulumi.get(self, "job_template_url") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + The display name within the Dynatrace WebUI. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def password(self) -> pulumi.Output[Optional[str]]: + """ + The password for the Ansible Tower account + """ + return pulumi.get(self, "password") + + @property + @pulumi.getter + def profile(self) -> pulumi.Output[str]: + """ + The ID of the associated alerting profile. + """ + return pulumi.get(self, "profile") + + @property + @pulumi.getter + def username(self) -> pulumi.Output[str]: + """ + The username of the Ansible Tower account + """ + return pulumi.get(self, "username") + diff --git a/sdk/python/lbrlabs_pulumi_dynatrace/email_notification.py b/sdk/python/lbrlabs_pulumi_dynatrace/email_notification.py new file mode 100644 index 00000000..d35197dd --- /dev/null +++ b/sdk/python/lbrlabs_pulumi_dynatrace/email_notification.py @@ -0,0 +1,523 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = ['EmailNotificationArgs', 'EmailNotification'] + +@pulumi.input_type +class EmailNotificationArgs: + def __init__(__self__, *, + body: pulumi.Input[str], + profile: pulumi.Input[str], + subject: pulumi.Input[str], + tos: pulumi.Input[Sequence[pulumi.Input[str]]], + active: Optional[pulumi.Input[bool]] = None, + bccs: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + ccs: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + name: Optional[pulumi.Input[str]] = None, + notify_closed_problems: Optional[pulumi.Input[bool]] = None): + """ + The set of arguments for constructing a EmailNotification resource. + :param pulumi.Input[str] body: The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] subject: The subject of the email notifications + :param pulumi.Input[Sequence[pulumi.Input[str]]] tos: The list of the email recipients + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[Sequence[pulumi.Input[str]]] bccs: The list of the email BCC-recipients + :param pulumi.Input[Sequence[pulumi.Input[str]]] ccs: The list of the email CC-recipients + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[bool] notify_closed_problems: Send email if problem is closed + """ + pulumi.set(__self__, "body", body) + pulumi.set(__self__, "profile", profile) + pulumi.set(__self__, "subject", subject) + pulumi.set(__self__, "tos", tos) + if active is not None: + pulumi.set(__self__, "active", active) + if bccs is not None: + pulumi.set(__self__, "bccs", bccs) + if ccs is not None: + pulumi.set(__self__, "ccs", ccs) + if name is not None: + pulumi.set(__self__, "name", name) + if notify_closed_problems is not None: + pulumi.set(__self__, "notify_closed_problems", notify_closed_problems) + + @property + @pulumi.getter + def body(self) -> pulumi.Input[str]: + """ + The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "body") + + @body.setter + def body(self, value: pulumi.Input[str]): + pulumi.set(self, "body", value) + + @property + @pulumi.getter + def profile(self) -> pulumi.Input[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: pulumi.Input[str]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter + def subject(self) -> pulumi.Input[str]: + """ + The subject of the email notifications + """ + return pulumi.get(self, "subject") + + @subject.setter + def subject(self, value: pulumi.Input[str]): + pulumi.set(self, "subject", value) + + @property + @pulumi.getter + def tos(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]: + """ + The list of the email recipients + """ + return pulumi.get(self, "tos") + + @tos.setter + def tos(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]): + pulumi.set(self, "tos", value) + + @property + @pulumi.getter + def active(self) -> Optional[pulumi.Input[bool]]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter + def bccs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + The list of the email BCC-recipients + """ + return pulumi.get(self, "bccs") + + @bccs.setter + def bccs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "bccs", value) + + @property + @pulumi.getter + def ccs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + The list of the email CC-recipients + """ + return pulumi.get(self, "ccs") + + @ccs.setter + def ccs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "ccs", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="notifyClosedProblems") + def notify_closed_problems(self) -> Optional[pulumi.Input[bool]]: + """ + Send email if problem is closed + """ + return pulumi.get(self, "notify_closed_problems") + + @notify_closed_problems.setter + def notify_closed_problems(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "notify_closed_problems", value) + + +@pulumi.input_type +class _EmailNotificationState: + def __init__(__self__, *, + active: Optional[pulumi.Input[bool]] = None, + bccs: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + body: Optional[pulumi.Input[str]] = None, + ccs: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + name: Optional[pulumi.Input[str]] = None, + notify_closed_problems: Optional[pulumi.Input[bool]] = None, + profile: Optional[pulumi.Input[str]] = None, + subject: Optional[pulumi.Input[str]] = None, + tos: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None): + """ + Input properties used for looking up and filtering EmailNotification resources. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[Sequence[pulumi.Input[str]]] bccs: The list of the email BCC-recipients + :param pulumi.Input[str] body: The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[Sequence[pulumi.Input[str]]] ccs: The list of the email CC-recipients + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[bool] notify_closed_problems: Send email if problem is closed + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] subject: The subject of the email notifications + :param pulumi.Input[Sequence[pulumi.Input[str]]] tos: The list of the email recipients + """ + if active is not None: + pulumi.set(__self__, "active", active) + if bccs is not None: + pulumi.set(__self__, "bccs", bccs) + if body is not None: + pulumi.set(__self__, "body", body) + if ccs is not None: + pulumi.set(__self__, "ccs", ccs) + if name is not None: + pulumi.set(__self__, "name", name) + if notify_closed_problems is not None: + pulumi.set(__self__, "notify_closed_problems", notify_closed_problems) + if profile is not None: + pulumi.set(__self__, "profile", profile) + if subject is not None: + pulumi.set(__self__, "subject", subject) + if tos is not None: + pulumi.set(__self__, "tos", tos) + + @property + @pulumi.getter + def active(self) -> Optional[pulumi.Input[bool]]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter + def bccs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + The list of the email BCC-recipients + """ + return pulumi.get(self, "bccs") + + @bccs.setter + def bccs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "bccs", value) + + @property + @pulumi.getter + def body(self) -> Optional[pulumi.Input[str]]: + """ + The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "body") + + @body.setter + def body(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "body", value) + + @property + @pulumi.getter + def ccs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + The list of the email CC-recipients + """ + return pulumi.get(self, "ccs") + + @ccs.setter + def ccs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "ccs", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="notifyClosedProblems") + def notify_closed_problems(self) -> Optional[pulumi.Input[bool]]: + """ + Send email if problem is closed + """ + return pulumi.get(self, "notify_closed_problems") + + @notify_closed_problems.setter + def notify_closed_problems(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "notify_closed_problems", value) + + @property + @pulumi.getter + def profile(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter + def subject(self) -> Optional[pulumi.Input[str]]: + """ + The subject of the email notifications + """ + return pulumi.get(self, "subject") + + @subject.setter + def subject(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "subject", value) + + @property + @pulumi.getter + def tos(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + The list of the email recipients + """ + return pulumi.get(self, "tos") + + @tos.setter + def tos(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "tos", value) + + +class EmailNotification(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + bccs: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + body: Optional[pulumi.Input[str]] = None, + ccs: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + name: Optional[pulumi.Input[str]] = None, + notify_closed_problems: Optional[pulumi.Input[bool]] = None, + profile: Optional[pulumi.Input[str]] = None, + subject: Optional[pulumi.Input[str]] = None, + tos: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + __props__=None): + """ + Create a EmailNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[Sequence[pulumi.Input[str]]] bccs: The list of the email BCC-recipients + :param pulumi.Input[str] body: The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[Sequence[pulumi.Input[str]]] ccs: The list of the email CC-recipients + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[bool] notify_closed_problems: Send email if problem is closed + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] subject: The subject of the email notifications + :param pulumi.Input[Sequence[pulumi.Input[str]]] tos: The list of the email recipients + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: EmailNotificationArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Create a EmailNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param EmailNotificationArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(EmailNotificationArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + bccs: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + body: Optional[pulumi.Input[str]] = None, + ccs: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + name: Optional[pulumi.Input[str]] = None, + notify_closed_problems: Optional[pulumi.Input[bool]] = None, + profile: Optional[pulumi.Input[str]] = None, + subject: Optional[pulumi.Input[str]] = None, + tos: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = EmailNotificationArgs.__new__(EmailNotificationArgs) + + __props__.__dict__["active"] = active + __props__.__dict__["bccs"] = bccs + if body is None and not opts.urn: + raise TypeError("Missing required property 'body'") + __props__.__dict__["body"] = body + __props__.__dict__["ccs"] = ccs + __props__.__dict__["name"] = name + __props__.__dict__["notify_closed_problems"] = notify_closed_problems + if profile is None and not opts.urn: + raise TypeError("Missing required property 'profile'") + __props__.__dict__["profile"] = profile + if subject is None and not opts.urn: + raise TypeError("Missing required property 'subject'") + __props__.__dict__["subject"] = subject + if tos is None and not opts.urn: + raise TypeError("Missing required property 'tos'") + __props__.__dict__["tos"] = tos + super(EmailNotification, __self__).__init__( + 'dynatrace:index/emailNotification:EmailNotification', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + bccs: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + body: Optional[pulumi.Input[str]] = None, + ccs: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + name: Optional[pulumi.Input[str]] = None, + notify_closed_problems: Optional[pulumi.Input[bool]] = None, + profile: Optional[pulumi.Input[str]] = None, + subject: Optional[pulumi.Input[str]] = None, + tos: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None) -> 'EmailNotification': + """ + Get an existing EmailNotification resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[Sequence[pulumi.Input[str]]] bccs: The list of the email BCC-recipients + :param pulumi.Input[str] body: The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[Sequence[pulumi.Input[str]]] ccs: The list of the email CC-recipients + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[bool] notify_closed_problems: Send email if problem is closed + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] subject: The subject of the email notifications + :param pulumi.Input[Sequence[pulumi.Input[str]]] tos: The list of the email recipients + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _EmailNotificationState.__new__(_EmailNotificationState) + + __props__.__dict__["active"] = active + __props__.__dict__["bccs"] = bccs + __props__.__dict__["body"] = body + __props__.__dict__["ccs"] = ccs + __props__.__dict__["name"] = name + __props__.__dict__["notify_closed_problems"] = notify_closed_problems + __props__.__dict__["profile"] = profile + __props__.__dict__["subject"] = subject + __props__.__dict__["tos"] = tos + return EmailNotification(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def active(self) -> pulumi.Output[Optional[bool]]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @property + @pulumi.getter + def bccs(self) -> pulumi.Output[Optional[Sequence[str]]]: + """ + The list of the email BCC-recipients + """ + return pulumi.get(self, "bccs") + + @property + @pulumi.getter + def body(self) -> pulumi.Output[str]: + """ + The template of the email notification. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "body") + + @property + @pulumi.getter + def ccs(self) -> pulumi.Output[Optional[Sequence[str]]]: + """ + The list of the email CC-recipients + """ + return pulumi.get(self, "ccs") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter(name="notifyClosedProblems") + def notify_closed_problems(self) -> pulumi.Output[Optional[bool]]: + """ + Send email if problem is closed + """ + return pulumi.get(self, "notify_closed_problems") + + @property + @pulumi.getter + def profile(self) -> pulumi.Output[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @property + @pulumi.getter + def subject(self) -> pulumi.Output[str]: + """ + The subject of the email notifications + """ + return pulumi.get(self, "subject") + + @property + @pulumi.getter + def tos(self) -> pulumi.Output[Sequence[str]]: + """ + The list of the email recipients + """ + return pulumi.get(self, "tos") + diff --git a/sdk/python/lbrlabs_pulumi_dynatrace/frequent_issues.py b/sdk/python/lbrlabs_pulumi_dynatrace/frequent_issues.py new file mode 100644 index 00000000..173cdccb --- /dev/null +++ b/sdk/python/lbrlabs_pulumi_dynatrace/frequent_issues.py @@ -0,0 +1,240 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = ['FrequentIssuesArgs', 'FrequentIssues'] + +@pulumi.input_type +class FrequentIssuesArgs: + def __init__(__self__, *, + detect_apps: pulumi.Input[bool], + detect_infra: pulumi.Input[bool], + detect_txn: pulumi.Input[bool]): + """ + The set of arguments for constructing a FrequentIssues resource. + :param pulumi.Input[bool] detect_apps: Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + :param pulumi.Input[bool] detect_infra: Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + :param pulumi.Input[bool] detect_txn: Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + """ + pulumi.set(__self__, "detect_apps", detect_apps) + pulumi.set(__self__, "detect_infra", detect_infra) + pulumi.set(__self__, "detect_txn", detect_txn) + + @property + @pulumi.getter(name="detectApps") + def detect_apps(self) -> pulumi.Input[bool]: + """ + Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "detect_apps") + + @detect_apps.setter + def detect_apps(self, value: pulumi.Input[bool]): + pulumi.set(self, "detect_apps", value) + + @property + @pulumi.getter(name="detectInfra") + def detect_infra(self) -> pulumi.Input[bool]: + """ + Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "detect_infra") + + @detect_infra.setter + def detect_infra(self, value: pulumi.Input[bool]): + pulumi.set(self, "detect_infra", value) + + @property + @pulumi.getter(name="detectTxn") + def detect_txn(self) -> pulumi.Input[bool]: + """ + Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "detect_txn") + + @detect_txn.setter + def detect_txn(self, value: pulumi.Input[bool]): + pulumi.set(self, "detect_txn", value) + + +@pulumi.input_type +class _FrequentIssuesState: + def __init__(__self__, *, + detect_apps: Optional[pulumi.Input[bool]] = None, + detect_infra: Optional[pulumi.Input[bool]] = None, + detect_txn: Optional[pulumi.Input[bool]] = None): + """ + Input properties used for looking up and filtering FrequentIssues resources. + :param pulumi.Input[bool] detect_apps: Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + :param pulumi.Input[bool] detect_infra: Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + :param pulumi.Input[bool] detect_txn: Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + """ + if detect_apps is not None: + pulumi.set(__self__, "detect_apps", detect_apps) + if detect_infra is not None: + pulumi.set(__self__, "detect_infra", detect_infra) + if detect_txn is not None: + pulumi.set(__self__, "detect_txn", detect_txn) + + @property + @pulumi.getter(name="detectApps") + def detect_apps(self) -> Optional[pulumi.Input[bool]]: + """ + Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "detect_apps") + + @detect_apps.setter + def detect_apps(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "detect_apps", value) + + @property + @pulumi.getter(name="detectInfra") + def detect_infra(self) -> Optional[pulumi.Input[bool]]: + """ + Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "detect_infra") + + @detect_infra.setter + def detect_infra(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "detect_infra", value) + + @property + @pulumi.getter(name="detectTxn") + def detect_txn(self) -> Optional[pulumi.Input[bool]]: + """ + Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "detect_txn") + + @detect_txn.setter + def detect_txn(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "detect_txn", value) + + +class FrequentIssues(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + detect_apps: Optional[pulumi.Input[bool]] = None, + detect_infra: Optional[pulumi.Input[bool]] = None, + detect_txn: Optional[pulumi.Input[bool]] = None, + __props__=None): + """ + Create a FrequentIssues resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] detect_apps: Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + :param pulumi.Input[bool] detect_infra: Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + :param pulumi.Input[bool] detect_txn: Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: FrequentIssuesArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Create a FrequentIssues resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param FrequentIssuesArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(FrequentIssuesArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + detect_apps: Optional[pulumi.Input[bool]] = None, + detect_infra: Optional[pulumi.Input[bool]] = None, + detect_txn: Optional[pulumi.Input[bool]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = FrequentIssuesArgs.__new__(FrequentIssuesArgs) + + if detect_apps is None and not opts.urn: + raise TypeError("Missing required property 'detect_apps'") + __props__.__dict__["detect_apps"] = detect_apps + if detect_infra is None and not opts.urn: + raise TypeError("Missing required property 'detect_infra'") + __props__.__dict__["detect_infra"] = detect_infra + if detect_txn is None and not opts.urn: + raise TypeError("Missing required property 'detect_txn'") + __props__.__dict__["detect_txn"] = detect_txn + super(FrequentIssues, __self__).__init__( + 'dynatrace:index/frequentIssues:FrequentIssues', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + detect_apps: Optional[pulumi.Input[bool]] = None, + detect_infra: Optional[pulumi.Input[bool]] = None, + detect_txn: Optional[pulumi.Input[bool]] = None) -> 'FrequentIssues': + """ + Get an existing FrequentIssues resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] detect_apps: Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + :param pulumi.Input[bool] detect_infra: Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + :param pulumi.Input[bool] detect_txn: Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _FrequentIssuesState.__new__(_FrequentIssuesState) + + __props__.__dict__["detect_apps"] = detect_apps + __props__.__dict__["detect_infra"] = detect_infra + __props__.__dict__["detect_txn"] = detect_txn + return FrequentIssues(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter(name="detectApps") + def detect_apps(self) -> pulumi.Output[bool]: + """ + Detect frequent issues within applications, enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "detect_apps") + + @property + @pulumi.getter(name="detectInfra") + def detect_infra(self) -> pulumi.Output[bool]: + """ + Detect frequent issues within infrastructure, enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "detect_infra") + + @property + @pulumi.getter(name="detectTxn") + def detect_txn(self) -> pulumi.Output[bool]: + """ + Detect frequent issues within transactions and services, enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "detect_txn") + diff --git a/sdk/python/lbrlabs_pulumi_dynatrace/get_alerting_profile.py b/sdk/python/lbrlabs_pulumi_dynatrace/get_alerting_profile.py new file mode 100644 index 00000000..7f648f9a --- /dev/null +++ b/sdk/python/lbrlabs_pulumi_dynatrace/get_alerting_profile.py @@ -0,0 +1,115 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = [ + 'GetAlertingProfileResult', + 'AwaitableGetAlertingProfileResult', + 'get_alerting_profile', + 'get_alerting_profile_output', +] + +@pulumi.output_type +class GetAlertingProfileResult: + """ + A collection of values returned by getAlertingProfile. + """ + def __init__(__self__, id=None, name=None): + if id and not isinstance(id, str): + raise TypeError("Expected argument 'id' to be a str") + pulumi.set(__self__, "id", id) + if name and not isinstance(name, str): + raise TypeError("Expected argument 'name' to be a str") + pulumi.set(__self__, "name", name) + + @property + @pulumi.getter + def id(self) -> str: + """ + The provider-assigned unique ID for this managed resource. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter + def name(self) -> str: + return pulumi.get(self, "name") + + +class AwaitableGetAlertingProfileResult(GetAlertingProfileResult): + # pylint: disable=using-constant-test + def __await__(self): + if False: + yield self + return GetAlertingProfileResult( + id=self.id, + name=self.name) + + +def get_alerting_profile(name: Optional[str] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetAlertingProfileResult: + """ + The Alerting Profile queries for an Alerting Profile that has a specified name. In case multiple Alerting Profiles share the same name the first one found will be used. + The ID of this Data Resource aligns with the IDs used by the Dynatrace Settings 2.0 API. + + ## Example Usage + + ```python + import pulumi + import lbrlabs_pulumi_dynatrace as dynatrace + import pulumi_dynatrace as dynatrace + + default = dynatrace.get_alerting_profile(name="Default") + my_webhook_notification = dynatrace.WebhookNotification("myWebhookNotification", + active=False, + profile=default.id, + url="https://webhook.site/40bf4d43-1a50-4ebd-913d-bf50ce7c3a1e", + insecure=True, + notify_event_merges=True, + notify_closed_problems=True, + payload="web-hook-payload") + ``` + """ + __args__ = dict() + __args__['name'] = name + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke('dynatrace:index/getAlertingProfile:getAlertingProfile', __args__, opts=opts, typ=GetAlertingProfileResult).value + + return AwaitableGetAlertingProfileResult( + id=__ret__.id, + name=__ret__.name) + + +@_utilities.lift_output_func(get_alerting_profile) +def get_alerting_profile_output(name: Optional[pulumi.Input[str]] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetAlertingProfileResult]: + """ + The Alerting Profile queries for an Alerting Profile that has a specified name. In case multiple Alerting Profiles share the same name the first one found will be used. + The ID of this Data Resource aligns with the IDs used by the Dynatrace Settings 2.0 API. + + ## Example Usage + + ```python + import pulumi + import lbrlabs_pulumi_dynatrace as dynatrace + import pulumi_dynatrace as dynatrace + + default = dynatrace.get_alerting_profile(name="Default") + my_webhook_notification = dynatrace.WebhookNotification("myWebhookNotification", + active=False, + profile=default.id, + url="https://webhook.site/40bf4d43-1a50-4ebd-913d-bf50ce7c3a1e", + insecure=True, + notify_event_merges=True, + notify_closed_problems=True, + payload="web-hook-payload") + ``` + """ + ... diff --git a/sdk/python/lbrlabs_pulumi_dynatrace/get_credentials.py b/sdk/python/lbrlabs_pulumi_dynatrace/get_credentials.py index 64e08dfd..82f1dfb7 100644 --- a/sdk/python/lbrlabs_pulumi_dynatrace/get_credentials.py +++ b/sdk/python/lbrlabs_pulumi_dynatrace/get_credentials.py @@ -21,18 +21,19 @@ class GetCredentialsResult: """ A collection of values returned by getCredentials. """ - def __init__(__self__, credentials=None, id=None): - if credentials and not isinstance(credentials, dict): - raise TypeError("Expected argument 'credentials' to be a dict") - pulumi.set(__self__, "credentials", credentials) + def __init__(__self__, id=None, name=None, scope=None, type=None): if id and not isinstance(id, str): raise TypeError("Expected argument 'id' to be a str") pulumi.set(__self__, "id", id) - - @property - @pulumi.getter - def credentials(self) -> Optional[Mapping[str, str]]: - return pulumi.get(self, "credentials") + if name and not isinstance(name, str): + raise TypeError("Expected argument 'name' to be a str") + pulumi.set(__self__, "name", name) + if scope and not isinstance(scope, str): + raise TypeError("Expected argument 'scope' to be a str") + pulumi.set(__self__, "scope", scope) + if type and not isinstance(type, str): + raise TypeError("Expected argument 'type' to be a str") + pulumi.set(__self__, "type", type) @property @pulumi.getter @@ -42,6 +43,30 @@ def id(self) -> str: """ return pulumi.get(self, "id") + @property + @pulumi.getter + def name(self) -> Optional[str]: + """ + The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def scope(self) -> Optional[str]: + """ + The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + """ + return pulumi.get(self, "scope") + + @property + @pulumi.getter + def type(self) -> Optional[str]: + """ + The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match + """ + return pulumi.get(self, "type") + class AwaitableGetCredentialsResult(GetCredentialsResult): # pylint: disable=using-constant-test @@ -49,29 +74,141 @@ def __await__(self): if False: yield self return GetCredentialsResult( - credentials=self.credentials, - id=self.id) + id=self.id, + name=self.name, + scope=self.scope, + type=self.type) -def get_credentials(credentials: Optional[Mapping[str, str]] = None, +def get_credentials(name: Optional[str] = None, + scope: Optional[str] = None, + type: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetCredentialsResult: """ - The credentials data source allows retrieval of all credentials. + The `get_credentials` data source queries for Credentials stored within the Credentials Vault using the properties `name`, `scope` and `type`. At least one of `name`, `scope` or `type` needs to be specified as a non empty value. Combinations of the three properties are also possible. + + ## Example Usage + + ```python + import pulumi + import lbrlabs_pulumi_dynatrace as dynatrace + import pulumi_dynatrace as dynatrace + + creds = dynatrace.get_credentials(name="Office365 Access Token") + _name_ = dynatrace.HttpMonitor("#name#", + enabled=True, + frequency=60, + locations=["SYNTHETIC_LOCATION-781752216580B1BC"], + anomaly_detections=[dynatrace.HttpMonitorAnomalyDetectionArgs( + loading_time_thresholds=[dynatrace.HttpMonitorAnomalyDetectionLoadingTimeThresholdArgs( + enabled=True, + )], + outage_handlings=[dynatrace.HttpMonitorAnomalyDetectionOutageHandlingArgs( + global_outage=True, + local_outage=False, + retry_on_error=False, + )], + )], + script=dynatrace.HttpMonitorScriptArgs( + requests=[dynatrace.HttpMonitorScriptRequestArgs( + description="google.com", + method="GET", + url="https://www.google.com", + authentication=dynatrace.HttpMonitorScriptRequestAuthenticationArgs( + type="BASIC_AUTHENTICATION", + credentials=creds.id, + ), + configuration=dynatrace.HttpMonitorScriptRequestConfigurationArgs( + accept_any_certificate=True, + follow_redirects=True, + ), + validation=dynatrace.HttpMonitorScriptRequestValidationArgs( + rules=[dynatrace.HttpMonitorScriptRequestValidationRuleArgs( + type="httpStatusesList", + pass_if_found=False, + value=">=400", + )], + ), + )], + )) + ``` + + + :param str name: The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + :param str scope: The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + :param str type: The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match """ __args__ = dict() - __args__['credentials'] = credentials + __args__['name'] = name + __args__['scope'] = scope + __args__['type'] = type opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) __ret__ = pulumi.runtime.invoke('dynatrace:index/getCredentials:getCredentials', __args__, opts=opts, typ=GetCredentialsResult).value return AwaitableGetCredentialsResult( - credentials=__ret__.credentials, - id=__ret__.id) + id=__ret__.id, + name=__ret__.name, + scope=__ret__.scope, + type=__ret__.type) @_utilities.lift_output_func(get_credentials) -def get_credentials_output(credentials: Optional[pulumi.Input[Optional[Mapping[str, str]]]] = None, +def get_credentials_output(name: Optional[pulumi.Input[Optional[str]]] = None, + scope: Optional[pulumi.Input[Optional[str]]] = None, + type: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetCredentialsResult]: """ - The credentials data source allows retrieval of all credentials. + The `get_credentials` data source queries for Credentials stored within the Credentials Vault using the properties `name`, `scope` and `type`. At least one of `name`, `scope` or `type` needs to be specified as a non empty value. Combinations of the three properties are also possible. + + ## Example Usage + + ```python + import pulumi + import lbrlabs_pulumi_dynatrace as dynatrace + import pulumi_dynatrace as dynatrace + + creds = dynatrace.get_credentials(name="Office365 Access Token") + _name_ = dynatrace.HttpMonitor("#name#", + enabled=True, + frequency=60, + locations=["SYNTHETIC_LOCATION-781752216580B1BC"], + anomaly_detections=[dynatrace.HttpMonitorAnomalyDetectionArgs( + loading_time_thresholds=[dynatrace.HttpMonitorAnomalyDetectionLoadingTimeThresholdArgs( + enabled=True, + )], + outage_handlings=[dynatrace.HttpMonitorAnomalyDetectionOutageHandlingArgs( + global_outage=True, + local_outage=False, + retry_on_error=False, + )], + )], + script=dynatrace.HttpMonitorScriptArgs( + requests=[dynatrace.HttpMonitorScriptRequestArgs( + description="google.com", + method="GET", + url="https://www.google.com", + authentication=dynatrace.HttpMonitorScriptRequestAuthenticationArgs( + type="BASIC_AUTHENTICATION", + credentials=creds.id, + ), + configuration=dynatrace.HttpMonitorScriptRequestConfigurationArgs( + accept_any_certificate=True, + follow_redirects=True, + ), + validation=dynatrace.HttpMonitorScriptRequestValidationArgs( + rules=[dynatrace.HttpMonitorScriptRequestValidationRuleArgs( + type="httpStatusesList", + pass_if_found=False, + value=">=400", + )], + ), + )], + )) + ``` + + + :param str name: The name of the credential as shown within the Dynatrace WebUI. If not specified all names will match + :param str scope: The scope of the credential. Possible values are `ALL`, `EXTENSION` and `SYNTHETIC`. If not specified all scopes will match. + :param str type: The type of the credential. Possible values are `CERTIFICATE`, `PUBLIC_CERTIFICATE`, `TOKEN`, `USERNAME_PASSWORD` and `UNKNOWN`. If not specified all credential types will match """ ... diff --git a/sdk/python/lbrlabs_pulumi_dynatrace/jira_notification.py b/sdk/python/lbrlabs_pulumi_dynatrace/jira_notification.py new file mode 100644 index 00000000..87df0d56 --- /dev/null +++ b/sdk/python/lbrlabs_pulumi_dynatrace/jira_notification.py @@ -0,0 +1,576 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = ['JiraNotificationArgs', 'JiraNotification'] + +@pulumi.input_type +class JiraNotificationArgs: + def __init__(__self__, *, + active: pulumi.Input[bool], + description: pulumi.Input[str], + issue_type: pulumi.Input[str], + profile: pulumi.Input[str], + project_key: pulumi.Input[str], + summary: pulumi.Input[str], + url: pulumi.Input[str], + username: pulumi.Input[str], + api_token: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a JiraNotification resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] description: The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + :param pulumi.Input[str] issue_type: The type of the Jira issue to be created by this notification + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] project_key: The project key of the Jira issue to be created by this notification + :param pulumi.Input[str] summary: The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] url: The URL of the Jira API endpoint + :param pulumi.Input[str] username: The username of the Jira profile + :param pulumi.Input[str] api_token: The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + :param pulumi.Input[str] name: The name of the notification configuration + """ + pulumi.set(__self__, "active", active) + pulumi.set(__self__, "description", description) + pulumi.set(__self__, "issue_type", issue_type) + pulumi.set(__self__, "profile", profile) + pulumi.set(__self__, "project_key", project_key) + pulumi.set(__self__, "summary", summary) + pulumi.set(__self__, "url", url) + pulumi.set(__self__, "username", username) + if api_token is not None: + pulumi.set(__self__, "api_token", api_token) + if name is not None: + pulumi.set(__self__, "name", name) + + @property + @pulumi.getter + def active(self) -> pulumi.Input[bool]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: pulumi.Input[bool]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter + def description(self) -> pulumi.Input[str]: + """ + The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: pulumi.Input[str]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter(name="issueType") + def issue_type(self) -> pulumi.Input[str]: + """ + The type of the Jira issue to be created by this notification + """ + return pulumi.get(self, "issue_type") + + @issue_type.setter + def issue_type(self, value: pulumi.Input[str]): + pulumi.set(self, "issue_type", value) + + @property + @pulumi.getter + def profile(self) -> pulumi.Input[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: pulumi.Input[str]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter(name="projectKey") + def project_key(self) -> pulumi.Input[str]: + """ + The project key of the Jira issue to be created by this notification + """ + return pulumi.get(self, "project_key") + + @project_key.setter + def project_key(self, value: pulumi.Input[str]): + pulumi.set(self, "project_key", value) + + @property + @pulumi.getter + def summary(self) -> pulumi.Input[str]: + """ + The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "summary") + + @summary.setter + def summary(self, value: pulumi.Input[str]): + pulumi.set(self, "summary", value) + + @property + @pulumi.getter + def url(self) -> pulumi.Input[str]: + """ + The URL of the Jira API endpoint + """ + return pulumi.get(self, "url") + + @url.setter + def url(self, value: pulumi.Input[str]): + pulumi.set(self, "url", value) + + @property + @pulumi.getter + def username(self) -> pulumi.Input[str]: + """ + The username of the Jira profile + """ + return pulumi.get(self, "username") + + @username.setter + def username(self, value: pulumi.Input[str]): + pulumi.set(self, "username", value) + + @property + @pulumi.getter(name="apiToken") + def api_token(self) -> Optional[pulumi.Input[str]]: + """ + The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + """ + return pulumi.get(self, "api_token") + + @api_token.setter + def api_token(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "api_token", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + +@pulumi.input_type +class _JiraNotificationState: + def __init__(__self__, *, + active: Optional[pulumi.Input[bool]] = None, + api_token: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + issue_type: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + project_key: Optional[pulumi.Input[str]] = None, + summary: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None, + username: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering JiraNotification resources. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] api_token: The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + :param pulumi.Input[str] description: The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + :param pulumi.Input[str] issue_type: The type of the Jira issue to be created by this notification + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] project_key: The project key of the Jira issue to be created by this notification + :param pulumi.Input[str] summary: The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] url: The URL of the Jira API endpoint + :param pulumi.Input[str] username: The username of the Jira profile + """ + if active is not None: + pulumi.set(__self__, "active", active) + if api_token is not None: + pulumi.set(__self__, "api_token", api_token) + if description is not None: + pulumi.set(__self__, "description", description) + if issue_type is not None: + pulumi.set(__self__, "issue_type", issue_type) + if name is not None: + pulumi.set(__self__, "name", name) + if profile is not None: + pulumi.set(__self__, "profile", profile) + if project_key is not None: + pulumi.set(__self__, "project_key", project_key) + if summary is not None: + pulumi.set(__self__, "summary", summary) + if url is not None: + pulumi.set(__self__, "url", url) + if username is not None: + pulumi.set(__self__, "username", username) + + @property + @pulumi.getter + def active(self) -> Optional[pulumi.Input[bool]]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter(name="apiToken") + def api_token(self) -> Optional[pulumi.Input[str]]: + """ + The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + """ + return pulumi.get(self, "api_token") + + @api_token.setter + def api_token(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "api_token", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter(name="issueType") + def issue_type(self) -> Optional[pulumi.Input[str]]: + """ + The type of the Jira issue to be created by this notification + """ + return pulumi.get(self, "issue_type") + + @issue_type.setter + def issue_type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "issue_type", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def profile(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter(name="projectKey") + def project_key(self) -> Optional[pulumi.Input[str]]: + """ + The project key of the Jira issue to be created by this notification + """ + return pulumi.get(self, "project_key") + + @project_key.setter + def project_key(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "project_key", value) + + @property + @pulumi.getter + def summary(self) -> Optional[pulumi.Input[str]]: + """ + The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "summary") + + @summary.setter + def summary(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "summary", value) + + @property + @pulumi.getter + def url(self) -> Optional[pulumi.Input[str]]: + """ + The URL of the Jira API endpoint + """ + return pulumi.get(self, "url") + + @url.setter + def url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "url", value) + + @property + @pulumi.getter + def username(self) -> Optional[pulumi.Input[str]]: + """ + The username of the Jira profile + """ + return pulumi.get(self, "username") + + @username.setter + def username(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "username", value) + + +class JiraNotification(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + api_token: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + issue_type: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + project_key: Optional[pulumi.Input[str]] = None, + summary: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None, + username: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + Create a JiraNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] api_token: The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + :param pulumi.Input[str] description: The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + :param pulumi.Input[str] issue_type: The type of the Jira issue to be created by this notification + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] project_key: The project key of the Jira issue to be created by this notification + :param pulumi.Input[str] summary: The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] url: The URL of the Jira API endpoint + :param pulumi.Input[str] username: The username of the Jira profile + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: JiraNotificationArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Create a JiraNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param JiraNotificationArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(JiraNotificationArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + api_token: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + issue_type: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + project_key: Optional[pulumi.Input[str]] = None, + summary: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None, + username: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = JiraNotificationArgs.__new__(JiraNotificationArgs) + + if active is None and not opts.urn: + raise TypeError("Missing required property 'active'") + __props__.__dict__["active"] = active + __props__.__dict__["api_token"] = None if api_token is None else pulumi.Output.secret(api_token) + if description is None and not opts.urn: + raise TypeError("Missing required property 'description'") + __props__.__dict__["description"] = description + if issue_type is None and not opts.urn: + raise TypeError("Missing required property 'issue_type'") + __props__.__dict__["issue_type"] = issue_type + __props__.__dict__["name"] = name + if profile is None and not opts.urn: + raise TypeError("Missing required property 'profile'") + __props__.__dict__["profile"] = profile + if project_key is None and not opts.urn: + raise TypeError("Missing required property 'project_key'") + __props__.__dict__["project_key"] = project_key + if summary is None and not opts.urn: + raise TypeError("Missing required property 'summary'") + __props__.__dict__["summary"] = summary + if url is None and not opts.urn: + raise TypeError("Missing required property 'url'") + __props__.__dict__["url"] = url + if username is None and not opts.urn: + raise TypeError("Missing required property 'username'") + __props__.__dict__["username"] = username + secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["apiToken"]) + opts = pulumi.ResourceOptions.merge(opts, secret_opts) + super(JiraNotification, __self__).__init__( + 'dynatrace:index/jiraNotification:JiraNotification', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + api_token: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + issue_type: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + project_key: Optional[pulumi.Input[str]] = None, + summary: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None, + username: Optional[pulumi.Input[str]] = None) -> 'JiraNotification': + """ + Get an existing JiraNotification resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] api_token: The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + :param pulumi.Input[str] description: The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + :param pulumi.Input[str] issue_type: The type of the Jira issue to be created by this notification + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] project_key: The project key of the Jira issue to be created by this notification + :param pulumi.Input[str] summary: The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] url: The URL of the Jira API endpoint + :param pulumi.Input[str] username: The username of the Jira profile + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _JiraNotificationState.__new__(_JiraNotificationState) + + __props__.__dict__["active"] = active + __props__.__dict__["api_token"] = api_token + __props__.__dict__["description"] = description + __props__.__dict__["issue_type"] = issue_type + __props__.__dict__["name"] = name + __props__.__dict__["profile"] = profile + __props__.__dict__["project_key"] = project_key + __props__.__dict__["summary"] = summary + __props__.__dict__["url"] = url + __props__.__dict__["username"] = username + return JiraNotification(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def active(self) -> pulumi.Output[bool]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @property + @pulumi.getter(name="apiToken") + def api_token(self) -> pulumi.Output[Optional[str]]: + """ + The API token for the Jira profile. Using password authentication [was deprecated by Jira](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-basic-auth-and-cookie-based-auth/) + """ + return pulumi.get(self, "api_token") + + @property + @pulumi.getter + def description(self) -> pulumi.Output[str]: + """ + The description of the Jira issue to be created by this notification. You can use same placeholders as in issue summary + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="issueType") + def issue_type(self) -> pulumi.Output[str]: + """ + The type of the Jira issue to be created by this notification + """ + return pulumi.get(self, "issue_type") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def profile(self) -> pulumi.Output[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @property + @pulumi.getter(name="projectKey") + def project_key(self) -> pulumi.Output[str]: + """ + The project key of the Jira issue to be created by this notification + """ + return pulumi.get(self, "project_key") + + @property + @pulumi.getter + def summary(self) -> pulumi.Output[str]: + """ + The summary of the Jira issue to be created by this notification. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "summary") + + @property + @pulumi.getter + def url(self) -> pulumi.Output[str]: + """ + The URL of the Jira API endpoint + """ + return pulumi.get(self, "url") + + @property + @pulumi.getter + def username(self) -> pulumi.Output[str]: + """ + The username of the Jira profile + """ + return pulumi.get(self, "username") + diff --git a/sdk/python/lbrlabs_pulumi_dynatrace/maintenance.py b/sdk/python/lbrlabs_pulumi_dynatrace/maintenance.py new file mode 100644 index 00000000..0fc33bbe --- /dev/null +++ b/sdk/python/lbrlabs_pulumi_dynatrace/maintenance.py @@ -0,0 +1,288 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities +from . import outputs +from ._inputs import * + +__all__ = ['MaintenanceArgs', 'Maintenance'] + +@pulumi.input_type +class MaintenanceArgs: + def __init__(__self__, *, + general_properties: pulumi.Input['MaintenanceGeneralPropertiesArgs'], + schedule: pulumi.Input['MaintenanceScheduleArgs'], + enabled: Optional[pulumi.Input[bool]] = None, + filters: Optional[pulumi.Input[Sequence[pulumi.Input['MaintenanceFilterArgs']]]] = None): + """ + The set of arguments for constructing a Maintenance resource. + :param pulumi.Input['MaintenanceGeneralPropertiesArgs'] general_properties: The general properties of the maintenance window + :param pulumi.Input['MaintenanceScheduleArgs'] schedule: The schedule of the maintenance window + :param pulumi.Input[bool] enabled: The maintenance window is enabled or disabled + :param pulumi.Input[Sequence[pulumi.Input['MaintenanceFilterArgs']]] filters: The filters of the maintenance window + """ + pulumi.set(__self__, "general_properties", general_properties) + pulumi.set(__self__, "schedule", schedule) + if enabled is not None: + pulumi.set(__self__, "enabled", enabled) + if filters is not None: + pulumi.set(__self__, "filters", filters) + + @property + @pulumi.getter(name="generalProperties") + def general_properties(self) -> pulumi.Input['MaintenanceGeneralPropertiesArgs']: + """ + The general properties of the maintenance window + """ + return pulumi.get(self, "general_properties") + + @general_properties.setter + def general_properties(self, value: pulumi.Input['MaintenanceGeneralPropertiesArgs']): + pulumi.set(self, "general_properties", value) + + @property + @pulumi.getter + def schedule(self) -> pulumi.Input['MaintenanceScheduleArgs']: + """ + The schedule of the maintenance window + """ + return pulumi.get(self, "schedule") + + @schedule.setter + def schedule(self, value: pulumi.Input['MaintenanceScheduleArgs']): + pulumi.set(self, "schedule", value) + + @property + @pulumi.getter + def enabled(self) -> Optional[pulumi.Input[bool]]: + """ + The maintenance window is enabled or disabled + """ + return pulumi.get(self, "enabled") + + @enabled.setter + def enabled(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "enabled", value) + + @property + @pulumi.getter + def filters(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['MaintenanceFilterArgs']]]]: + """ + The filters of the maintenance window + """ + return pulumi.get(self, "filters") + + @filters.setter + def filters(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['MaintenanceFilterArgs']]]]): + pulumi.set(self, "filters", value) + + +@pulumi.input_type +class _MaintenanceState: + def __init__(__self__, *, + enabled: Optional[pulumi.Input[bool]] = None, + filters: Optional[pulumi.Input[Sequence[pulumi.Input['MaintenanceFilterArgs']]]] = None, + general_properties: Optional[pulumi.Input['MaintenanceGeneralPropertiesArgs']] = None, + schedule: Optional[pulumi.Input['MaintenanceScheduleArgs']] = None): + """ + Input properties used for looking up and filtering Maintenance resources. + :param pulumi.Input[bool] enabled: The maintenance window is enabled or disabled + :param pulumi.Input[Sequence[pulumi.Input['MaintenanceFilterArgs']]] filters: The filters of the maintenance window + :param pulumi.Input['MaintenanceGeneralPropertiesArgs'] general_properties: The general properties of the maintenance window + :param pulumi.Input['MaintenanceScheduleArgs'] schedule: The schedule of the maintenance window + """ + if enabled is not None: + pulumi.set(__self__, "enabled", enabled) + if filters is not None: + pulumi.set(__self__, "filters", filters) + if general_properties is not None: + pulumi.set(__self__, "general_properties", general_properties) + if schedule is not None: + pulumi.set(__self__, "schedule", schedule) + + @property + @pulumi.getter + def enabled(self) -> Optional[pulumi.Input[bool]]: + """ + The maintenance window is enabled or disabled + """ + return pulumi.get(self, "enabled") + + @enabled.setter + def enabled(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "enabled", value) + + @property + @pulumi.getter + def filters(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['MaintenanceFilterArgs']]]]: + """ + The filters of the maintenance window + """ + return pulumi.get(self, "filters") + + @filters.setter + def filters(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['MaintenanceFilterArgs']]]]): + pulumi.set(self, "filters", value) + + @property + @pulumi.getter(name="generalProperties") + def general_properties(self) -> Optional[pulumi.Input['MaintenanceGeneralPropertiesArgs']]: + """ + The general properties of the maintenance window + """ + return pulumi.get(self, "general_properties") + + @general_properties.setter + def general_properties(self, value: Optional[pulumi.Input['MaintenanceGeneralPropertiesArgs']]): + pulumi.set(self, "general_properties", value) + + @property + @pulumi.getter + def schedule(self) -> Optional[pulumi.Input['MaintenanceScheduleArgs']]: + """ + The schedule of the maintenance window + """ + return pulumi.get(self, "schedule") + + @schedule.setter + def schedule(self, value: Optional[pulumi.Input['MaintenanceScheduleArgs']]): + pulumi.set(self, "schedule", value) + + +class Maintenance(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + enabled: Optional[pulumi.Input[bool]] = None, + filters: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['MaintenanceFilterArgs']]]]] = None, + general_properties: Optional[pulumi.Input[pulumi.InputType['MaintenanceGeneralPropertiesArgs']]] = None, + schedule: Optional[pulumi.Input[pulumi.InputType['MaintenanceScheduleArgs']]] = None, + __props__=None): + """ + Create a Maintenance resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] enabled: The maintenance window is enabled or disabled + :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['MaintenanceFilterArgs']]]] filters: The filters of the maintenance window + :param pulumi.Input[pulumi.InputType['MaintenanceGeneralPropertiesArgs']] general_properties: The general properties of the maintenance window + :param pulumi.Input[pulumi.InputType['MaintenanceScheduleArgs']] schedule: The schedule of the maintenance window + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: MaintenanceArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Create a Maintenance resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param MaintenanceArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(MaintenanceArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + enabled: Optional[pulumi.Input[bool]] = None, + filters: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['MaintenanceFilterArgs']]]]] = None, + general_properties: Optional[pulumi.Input[pulumi.InputType['MaintenanceGeneralPropertiesArgs']]] = None, + schedule: Optional[pulumi.Input[pulumi.InputType['MaintenanceScheduleArgs']]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = MaintenanceArgs.__new__(MaintenanceArgs) + + __props__.__dict__["enabled"] = enabled + __props__.__dict__["filters"] = filters + if general_properties is None and not opts.urn: + raise TypeError("Missing required property 'general_properties'") + __props__.__dict__["general_properties"] = general_properties + if schedule is None and not opts.urn: + raise TypeError("Missing required property 'schedule'") + __props__.__dict__["schedule"] = schedule + super(Maintenance, __self__).__init__( + 'dynatrace:index/maintenance:Maintenance', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + enabled: Optional[pulumi.Input[bool]] = None, + filters: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['MaintenanceFilterArgs']]]]] = None, + general_properties: Optional[pulumi.Input[pulumi.InputType['MaintenanceGeneralPropertiesArgs']]] = None, + schedule: Optional[pulumi.Input[pulumi.InputType['MaintenanceScheduleArgs']]] = None) -> 'Maintenance': + """ + Get an existing Maintenance resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] enabled: The maintenance window is enabled or disabled + :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['MaintenanceFilterArgs']]]] filters: The filters of the maintenance window + :param pulumi.Input[pulumi.InputType['MaintenanceGeneralPropertiesArgs']] general_properties: The general properties of the maintenance window + :param pulumi.Input[pulumi.InputType['MaintenanceScheduleArgs']] schedule: The schedule of the maintenance window + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _MaintenanceState.__new__(_MaintenanceState) + + __props__.__dict__["enabled"] = enabled + __props__.__dict__["filters"] = filters + __props__.__dict__["general_properties"] = general_properties + __props__.__dict__["schedule"] = schedule + return Maintenance(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def enabled(self) -> pulumi.Output[Optional[bool]]: + """ + The maintenance window is enabled or disabled + """ + return pulumi.get(self, "enabled") + + @property + @pulumi.getter + def filters(self) -> pulumi.Output[Optional[Sequence['outputs.MaintenanceFilter']]]: + """ + The filters of the maintenance window + """ + return pulumi.get(self, "filters") + + @property + @pulumi.getter(name="generalProperties") + def general_properties(self) -> pulumi.Output['outputs.MaintenanceGeneralProperties']: + """ + The general properties of the maintenance window + """ + return pulumi.get(self, "general_properties") + + @property + @pulumi.getter + def schedule(self) -> pulumi.Output['outputs.MaintenanceSchedule']: + """ + The schedule of the maintenance window + """ + return pulumi.get(self, "schedule") + diff --git a/sdk/python/lbrlabs_pulumi_dynatrace/ops_genie_notification.py b/sdk/python/lbrlabs_pulumi_dynatrace/ops_genie_notification.py new file mode 100644 index 00000000..cc087873 --- /dev/null +++ b/sdk/python/lbrlabs_pulumi_dynatrace/ops_genie_notification.py @@ -0,0 +1,384 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = ['OpsGenieNotificationArgs', 'OpsGenieNotification'] + +@pulumi.input_type +class OpsGenieNotificationArgs: + def __init__(__self__, *, + active: pulumi.Input[bool], + domain: pulumi.Input[str], + message: pulumi.Input[str], + profile: pulumi.Input[str], + api_key: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a OpsGenieNotification resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] domain: The region domain of the OpsGenie + :param pulumi.Input[str] message: The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] api_key: The API key to access OpsGenie + :param pulumi.Input[str] name: The name of the notification configuration + """ + pulumi.set(__self__, "active", active) + pulumi.set(__self__, "domain", domain) + pulumi.set(__self__, "message", message) + pulumi.set(__self__, "profile", profile) + if api_key is not None: + pulumi.set(__self__, "api_key", api_key) + if name is not None: + pulumi.set(__self__, "name", name) + + @property + @pulumi.getter + def active(self) -> pulumi.Input[bool]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: pulumi.Input[bool]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter + def domain(self) -> pulumi.Input[str]: + """ + The region domain of the OpsGenie + """ + return pulumi.get(self, "domain") + + @domain.setter + def domain(self, value: pulumi.Input[str]): + pulumi.set(self, "domain", value) + + @property + @pulumi.getter + def message(self) -> pulumi.Input[str]: + """ + The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + """ + return pulumi.get(self, "message") + + @message.setter + def message(self, value: pulumi.Input[str]): + pulumi.set(self, "message", value) + + @property + @pulumi.getter + def profile(self) -> pulumi.Input[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: pulumi.Input[str]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter(name="apiKey") + def api_key(self) -> Optional[pulumi.Input[str]]: + """ + The API key to access OpsGenie + """ + return pulumi.get(self, "api_key") + + @api_key.setter + def api_key(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "api_key", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + +@pulumi.input_type +class _OpsGenieNotificationState: + def __init__(__self__, *, + active: Optional[pulumi.Input[bool]] = None, + api_key: Optional[pulumi.Input[str]] = None, + domain: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering OpsGenieNotification resources. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] api_key: The API key to access OpsGenie + :param pulumi.Input[str] domain: The region domain of the OpsGenie + :param pulumi.Input[str] message: The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] profile: The ID of the associated alerting profile + """ + if active is not None: + pulumi.set(__self__, "active", active) + if api_key is not None: + pulumi.set(__self__, "api_key", api_key) + if domain is not None: + pulumi.set(__self__, "domain", domain) + if message is not None: + pulumi.set(__self__, "message", message) + if name is not None: + pulumi.set(__self__, "name", name) + if profile is not None: + pulumi.set(__self__, "profile", profile) + + @property + @pulumi.getter + def active(self) -> Optional[pulumi.Input[bool]]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter(name="apiKey") + def api_key(self) -> Optional[pulumi.Input[str]]: + """ + The API key to access OpsGenie + """ + return pulumi.get(self, "api_key") + + @api_key.setter + def api_key(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "api_key", value) + + @property + @pulumi.getter + def domain(self) -> Optional[pulumi.Input[str]]: + """ + The region domain of the OpsGenie + """ + return pulumi.get(self, "domain") + + @domain.setter + def domain(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "domain", value) + + @property + @pulumi.getter + def message(self) -> Optional[pulumi.Input[str]]: + """ + The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + """ + return pulumi.get(self, "message") + + @message.setter + def message(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "message", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def profile(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "profile", value) + + +class OpsGenieNotification(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + api_key: Optional[pulumi.Input[str]] = None, + domain: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + Create a OpsGenieNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] api_key: The API key to access OpsGenie + :param pulumi.Input[str] domain: The region domain of the OpsGenie + :param pulumi.Input[str] message: The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] profile: The ID of the associated alerting profile + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: OpsGenieNotificationArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Create a OpsGenieNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param OpsGenieNotificationArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(OpsGenieNotificationArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + api_key: Optional[pulumi.Input[str]] = None, + domain: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = OpsGenieNotificationArgs.__new__(OpsGenieNotificationArgs) + + if active is None and not opts.urn: + raise TypeError("Missing required property 'active'") + __props__.__dict__["active"] = active + __props__.__dict__["api_key"] = None if api_key is None else pulumi.Output.secret(api_key) + if domain is None and not opts.urn: + raise TypeError("Missing required property 'domain'") + __props__.__dict__["domain"] = domain + if message is None and not opts.urn: + raise TypeError("Missing required property 'message'") + __props__.__dict__["message"] = message + __props__.__dict__["name"] = name + if profile is None and not opts.urn: + raise TypeError("Missing required property 'profile'") + __props__.__dict__["profile"] = profile + secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["apiKey"]) + opts = pulumi.ResourceOptions.merge(opts, secret_opts) + super(OpsGenieNotification, __self__).__init__( + 'dynatrace:index/opsGenieNotification:OpsGenieNotification', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + api_key: Optional[pulumi.Input[str]] = None, + domain: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None) -> 'OpsGenieNotification': + """ + Get an existing OpsGenieNotification resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] api_key: The API key to access OpsGenie + :param pulumi.Input[str] domain: The region domain of the OpsGenie + :param pulumi.Input[str] message: The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] profile: The ID of the associated alerting profile + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _OpsGenieNotificationState.__new__(_OpsGenieNotificationState) + + __props__.__dict__["active"] = active + __props__.__dict__["api_key"] = api_key + __props__.__dict__["domain"] = domain + __props__.__dict__["message"] = message + __props__.__dict__["name"] = name + __props__.__dict__["profile"] = profile + return OpsGenieNotification(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def active(self) -> pulumi.Output[bool]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @property + @pulumi.getter(name="apiKey") + def api_key(self) -> pulumi.Output[Optional[str]]: + """ + The API key to access OpsGenie + """ + return pulumi.get(self, "api_key") + + @property + @pulumi.getter + def domain(self) -> pulumi.Output[str]: + """ + The region domain of the OpsGenie + """ + return pulumi.get(self, "domain") + + @property + @pulumi.getter + def message(self) -> pulumi.Output[str]: + """ + The content of the message. You can use the following placeholders: * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem + """ + return pulumi.get(self, "message") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def profile(self) -> pulumi.Output[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + diff --git a/sdk/python/lbrlabs_pulumi_dynatrace/outputs.py b/sdk/python/lbrlabs_pulumi_dynatrace/outputs.py index a6d9e922..671d2b7f 100644 --- a/sdk/python/lbrlabs_pulumi_dynatrace/outputs.py +++ b/sdk/python/lbrlabs_pulumi_dynatrace/outputs.py @@ -488,6 +488,20 @@ 'ImsBridgesQueueManager', 'ImsBridgesQueueManagerQueueManager', 'K8sCredentialsEventsFieldSelector', + 'MaintenanceFilter', + 'MaintenanceFilterFilter', + 'MaintenanceGeneralProperties', + 'MaintenanceSchedule', + 'MaintenanceScheduleDailyRecurrence', + 'MaintenanceScheduleDailyRecurrenceRecurrenceRange', + 'MaintenanceScheduleDailyRecurrenceTimeWindow', + 'MaintenanceScheduleMonthlyRecurrence', + 'MaintenanceScheduleMonthlyRecurrenceRecurrenceRange', + 'MaintenanceScheduleMonthlyRecurrenceTimeWindow', + 'MaintenanceScheduleOnceRecurrence', + 'MaintenanceScheduleWeeklyRecurrence', + 'MaintenanceScheduleWeeklyRecurrenceRecurrenceRange', + 'MaintenanceScheduleWeeklyRecurrenceTimeWindow', 'MaintenanceWindowMetadata', 'MaintenanceWindowSchedule', 'MaintenanceWindowScheduleRecurrence', @@ -872,6 +886,10 @@ 'WebApplicationUserTagsTag', 'WebApplicationWaterfallSettings', 'WebApplicationXhrActionApdexSettings', + 'WebhookNotificationHeaders', + 'WebhookNotificationHeadersHeader', + 'XmattersNotificationHeaders', + 'XmattersNotificationHeadersHeader', 'GetSyntheticLocationsLocationsResult', 'GetSyntheticLocationsLocationsLocationResult', ] @@ -2529,11 +2547,14 @@ def get(self, key: str, default = None) -> Any: def __init__(__self__, *, enabled: Optional[bool] = None, + normalization: Optional[str] = None, selector: Optional[str] = None, unknowns: Optional[str] = None, value_format: Optional[str] = None): if enabled is not None: pulumi.set(__self__, "enabled", enabled) + if normalization is not None: + pulumi.set(__self__, "normalization", normalization) if selector is not None: pulumi.set(__self__, "selector", selector) if unknowns is not None: @@ -2546,6 +2567,11 @@ def __init__(__self__, *, def enabled(self) -> Optional[bool]: return pulumi.get(self, "enabled") + @property + @pulumi.getter + def normalization(self) -> Optional[str]: + return pulumi.get(self, "normalization") + @property @pulumi.getter def selector(self) -> Optional[str]: @@ -13109,6 +13135,7 @@ def __init__(__self__, *, consistent_colors: Optional[bool] = None, dynamic_filters: Optional['outputs.DashboardDashboardMetadataDynamicFilters'] = None, filter: Optional['outputs.DashboardDashboardMetadataFilter'] = None, + preset: Optional[bool] = None, shared: Optional[bool] = None, sharing_details: Optional['outputs.DashboardDashboardMetadataSharingDetails'] = None, tags: Optional[Sequence[str]] = None, @@ -13120,6 +13147,7 @@ def __init__(__self__, *, :param bool consistent_colors: The tile uses consistent colors when rendering its content :param 'DashboardDashboardMetadataDynamicFiltersArgs' dynamic_filters: Dashboard filter configuration of a dashboard :param 'DashboardDashboardMetadataFilterArgs' filter: Global filter Settings for the Dashboard + :param bool preset: the dashboard is a preset (`true`) or not (`false`). Default is `false`. :param bool shared: the dashboard is shared (`true`) or private (`false`) :param 'DashboardDashboardMetadataSharingDetailsArgs' sharing_details: represents sharing configuration of a dashboard :param Sequence[str] tags: a set of tags assigned to the dashboard @@ -13134,6 +13162,8 @@ def __init__(__self__, *, pulumi.set(__self__, "dynamic_filters", dynamic_filters) if filter is not None: pulumi.set(__self__, "filter", filter) + if preset is not None: + pulumi.set(__self__, "preset", preset) if shared is not None: pulumi.set(__self__, "shared", shared) if sharing_details is not None: @@ -13185,6 +13215,14 @@ def filter(self) -> Optional['outputs.DashboardDashboardMetadataFilter']: """ return pulumi.get(self, "filter") + @property + @pulumi.getter + def preset(self) -> Optional[bool]: + """ + the dashboard is a preset (`true`) or not (`false`). Default is `false`. + """ + return pulumi.get(self, "preset") + @property @pulumi.getter def shared(self) -> Optional[bool]: @@ -20833,6 +20871,689 @@ def unknowns(self) -> Optional[str]: return pulumi.get(self, "unknowns") +@pulumi.output_type +class MaintenanceFilter(dict): + def __init__(__self__, *, + filters: Optional[Sequence['outputs.MaintenanceFilterFilter']] = None): + """ + :param Sequence['MaintenanceFilterFilterArgs'] filters: A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies + """ + if filters is not None: + pulumi.set(__self__, "filters", filters) + + @property + @pulumi.getter + def filters(self) -> Optional[Sequence['outputs.MaintenanceFilterFilter']]: + """ + A list of matching rules for dynamic filter formation. If several rules are set, the OR logic applies + """ + return pulumi.get(self, "filters") + + +@pulumi.output_type +class MaintenanceFilterFilter(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "entityId": + suggest = "entity_id" + elif key == "entityTags": + suggest = "entity_tags" + elif key == "entityType": + suggest = "entity_type" + elif key == "managementZones": + suggest = "management_zones" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in MaintenanceFilterFilter. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + MaintenanceFilterFilter.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + MaintenanceFilterFilter.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + entity_id: Optional[str] = None, + entity_tags: Optional[Sequence[str]] = None, + entity_type: Optional[str] = None, + management_zones: Optional[Sequence[str]] = None): + if entity_id is not None: + pulumi.set(__self__, "entity_id", entity_id) + if entity_tags is not None: + pulumi.set(__self__, "entity_tags", entity_tags) + if entity_type is not None: + pulumi.set(__self__, "entity_type", entity_type) + if management_zones is not None: + pulumi.set(__self__, "management_zones", management_zones) + + @property + @pulumi.getter(name="entityId") + def entity_id(self) -> Optional[str]: + return pulumi.get(self, "entity_id") + + @property + @pulumi.getter(name="entityTags") + def entity_tags(self) -> Optional[Sequence[str]]: + return pulumi.get(self, "entity_tags") + + @property + @pulumi.getter(name="entityType") + def entity_type(self) -> Optional[str]: + return pulumi.get(self, "entity_type") + + @property + @pulumi.getter(name="managementZones") + def management_zones(self) -> Optional[Sequence[str]]: + return pulumi.get(self, "management_zones") + + +@pulumi.output_type +class MaintenanceGeneralProperties(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "disableSynthetic": + suggest = "disable_synthetic" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in MaintenanceGeneralProperties. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + MaintenanceGeneralProperties.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + MaintenanceGeneralProperties.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + name: str, + suppression: str, + type: str, + description: Optional[str] = None, + disable_synthetic: Optional[bool] = None): + """ + :param str name: The name of the maintenance window, displayed in the UI + :param str suppression: The type of suppression of alerting and problem detection during the maintenance + :param str type: The type of the maintenance: planned or unplanned + :param str description: A short description of the maintenance purpose + :param bool disable_synthetic: Suppress execution of synthetic monitors during the maintenance + """ + pulumi.set(__self__, "name", name) + pulumi.set(__self__, "suppression", suppression) + pulumi.set(__self__, "type", type) + if description is not None: + pulumi.set(__self__, "description", description) + if disable_synthetic is not None: + pulumi.set(__self__, "disable_synthetic", disable_synthetic) + + @property + @pulumi.getter + def name(self) -> str: + """ + The name of the maintenance window, displayed in the UI + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def suppression(self) -> str: + """ + The type of suppression of alerting and problem detection during the maintenance + """ + return pulumi.get(self, "suppression") + + @property + @pulumi.getter + def type(self) -> str: + """ + The type of the maintenance: planned or unplanned + """ + return pulumi.get(self, "type") + + @property + @pulumi.getter + def description(self) -> Optional[str]: + """ + A short description of the maintenance purpose + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="disableSynthetic") + def disable_synthetic(self) -> Optional[bool]: + """ + Suppress execution of synthetic monitors during the maintenance + """ + return pulumi.get(self, "disable_synthetic") + + +@pulumi.output_type +class MaintenanceSchedule(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "dailyRecurrence": + suggest = "daily_recurrence" + elif key == "monthlyRecurrence": + suggest = "monthly_recurrence" + elif key == "onceRecurrence": + suggest = "once_recurrence" + elif key == "weeklyRecurrence": + suggest = "weekly_recurrence" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in MaintenanceSchedule. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + MaintenanceSchedule.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + MaintenanceSchedule.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + type: str, + daily_recurrence: Optional['outputs.MaintenanceScheduleDailyRecurrence'] = None, + monthly_recurrence: Optional['outputs.MaintenanceScheduleMonthlyRecurrence'] = None, + once_recurrence: Optional['outputs.MaintenanceScheduleOnceRecurrence'] = None, + weekly_recurrence: Optional['outputs.MaintenanceScheduleWeeklyRecurrence'] = None): + """ + :param str type: The time window of the maintenance window + :param 'MaintenanceScheduleDailyRecurrenceArgs' daily_recurrence: The configuration for maintenance windows occuring daily + :param 'MaintenanceScheduleMonthlyRecurrenceArgs' monthly_recurrence: The configuration for maintenance windows occuring monthly + :param 'MaintenanceScheduleOnceRecurrenceArgs' once_recurrence: The configuration for maintenance windows occuring once + :param 'MaintenanceScheduleWeeklyRecurrenceArgs' weekly_recurrence: The configuration for maintenance windows occuring weekly + """ + pulumi.set(__self__, "type", type) + if daily_recurrence is not None: + pulumi.set(__self__, "daily_recurrence", daily_recurrence) + if monthly_recurrence is not None: + pulumi.set(__self__, "monthly_recurrence", monthly_recurrence) + if once_recurrence is not None: + pulumi.set(__self__, "once_recurrence", once_recurrence) + if weekly_recurrence is not None: + pulumi.set(__self__, "weekly_recurrence", weekly_recurrence) + + @property + @pulumi.getter + def type(self) -> str: + """ + The time window of the maintenance window + """ + return pulumi.get(self, "type") + + @property + @pulumi.getter(name="dailyRecurrence") + def daily_recurrence(self) -> Optional['outputs.MaintenanceScheduleDailyRecurrence']: + """ + The configuration for maintenance windows occuring daily + """ + return pulumi.get(self, "daily_recurrence") + + @property + @pulumi.getter(name="monthlyRecurrence") + def monthly_recurrence(self) -> Optional['outputs.MaintenanceScheduleMonthlyRecurrence']: + """ + The configuration for maintenance windows occuring monthly + """ + return pulumi.get(self, "monthly_recurrence") + + @property + @pulumi.getter(name="onceRecurrence") + def once_recurrence(self) -> Optional['outputs.MaintenanceScheduleOnceRecurrence']: + """ + The configuration for maintenance windows occuring once + """ + return pulumi.get(self, "once_recurrence") + + @property + @pulumi.getter(name="weeklyRecurrence") + def weekly_recurrence(self) -> Optional['outputs.MaintenanceScheduleWeeklyRecurrence']: + """ + The configuration for maintenance windows occuring weekly + """ + return pulumi.get(self, "weekly_recurrence") + + +@pulumi.output_type +class MaintenanceScheduleDailyRecurrence(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "recurrenceRange": + suggest = "recurrence_range" + elif key == "timeWindow": + suggest = "time_window" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in MaintenanceScheduleDailyRecurrence. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + MaintenanceScheduleDailyRecurrence.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + MaintenanceScheduleDailyRecurrence.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + recurrence_range: 'outputs.MaintenanceScheduleDailyRecurrenceRecurrenceRange', + time_window: 'outputs.MaintenanceScheduleDailyRecurrenceTimeWindow'): + pulumi.set(__self__, "recurrence_range", recurrence_range) + pulumi.set(__self__, "time_window", time_window) + + @property + @pulumi.getter(name="recurrenceRange") + def recurrence_range(self) -> 'outputs.MaintenanceScheduleDailyRecurrenceRecurrenceRange': + return pulumi.get(self, "recurrence_range") + + @property + @pulumi.getter(name="timeWindow") + def time_window(self) -> 'outputs.MaintenanceScheduleDailyRecurrenceTimeWindow': + return pulumi.get(self, "time_window") + + +@pulumi.output_type +class MaintenanceScheduleDailyRecurrenceRecurrenceRange(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "endDate": + suggest = "end_date" + elif key == "startDate": + suggest = "start_date" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in MaintenanceScheduleDailyRecurrenceRecurrenceRange. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + MaintenanceScheduleDailyRecurrenceRecurrenceRange.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + MaintenanceScheduleDailyRecurrenceRecurrenceRange.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + end_date: str, + start_date: str): + pulumi.set(__self__, "end_date", end_date) + pulumi.set(__self__, "start_date", start_date) + + @property + @pulumi.getter(name="endDate") + def end_date(self) -> str: + return pulumi.get(self, "end_date") + + @property + @pulumi.getter(name="startDate") + def start_date(self) -> str: + return pulumi.get(self, "start_date") + + +@pulumi.output_type +class MaintenanceScheduleDailyRecurrenceTimeWindow(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "endTime": + suggest = "end_time" + elif key == "startTime": + suggest = "start_time" + elif key == "timeZone": + suggest = "time_zone" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in MaintenanceScheduleDailyRecurrenceTimeWindow. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + MaintenanceScheduleDailyRecurrenceTimeWindow.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + MaintenanceScheduleDailyRecurrenceTimeWindow.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + end_time: str, + start_time: str, + time_zone: str): + pulumi.set(__self__, "end_time", end_time) + pulumi.set(__self__, "start_time", start_time) + pulumi.set(__self__, "time_zone", time_zone) + + @property + @pulumi.getter(name="endTime") + def end_time(self) -> str: + return pulumi.get(self, "end_time") + + @property + @pulumi.getter(name="startTime") + def start_time(self) -> str: + return pulumi.get(self, "start_time") + + @property + @pulumi.getter(name="timeZone") + def time_zone(self) -> str: + return pulumi.get(self, "time_zone") + + +@pulumi.output_type +class MaintenanceScheduleMonthlyRecurrence(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "dayOfMonth": + suggest = "day_of_month" + elif key == "recurrenceRange": + suggest = "recurrence_range" + elif key == "timeWindow": + suggest = "time_window" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in MaintenanceScheduleMonthlyRecurrence. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + MaintenanceScheduleMonthlyRecurrence.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + MaintenanceScheduleMonthlyRecurrence.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + day_of_month: int, + recurrence_range: 'outputs.MaintenanceScheduleMonthlyRecurrenceRecurrenceRange', + time_window: 'outputs.MaintenanceScheduleMonthlyRecurrenceTimeWindow'): + pulumi.set(__self__, "day_of_month", day_of_month) + pulumi.set(__self__, "recurrence_range", recurrence_range) + pulumi.set(__self__, "time_window", time_window) + + @property + @pulumi.getter(name="dayOfMonth") + def day_of_month(self) -> int: + return pulumi.get(self, "day_of_month") + + @property + @pulumi.getter(name="recurrenceRange") + def recurrence_range(self) -> 'outputs.MaintenanceScheduleMonthlyRecurrenceRecurrenceRange': + return pulumi.get(self, "recurrence_range") + + @property + @pulumi.getter(name="timeWindow") + def time_window(self) -> 'outputs.MaintenanceScheduleMonthlyRecurrenceTimeWindow': + return pulumi.get(self, "time_window") + + +@pulumi.output_type +class MaintenanceScheduleMonthlyRecurrenceRecurrenceRange(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "endDate": + suggest = "end_date" + elif key == "startDate": + suggest = "start_date" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in MaintenanceScheduleMonthlyRecurrenceRecurrenceRange. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + MaintenanceScheduleMonthlyRecurrenceRecurrenceRange.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + MaintenanceScheduleMonthlyRecurrenceRecurrenceRange.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + end_date: str, + start_date: str): + pulumi.set(__self__, "end_date", end_date) + pulumi.set(__self__, "start_date", start_date) + + @property + @pulumi.getter(name="endDate") + def end_date(self) -> str: + return pulumi.get(self, "end_date") + + @property + @pulumi.getter(name="startDate") + def start_date(self) -> str: + return pulumi.get(self, "start_date") + + +@pulumi.output_type +class MaintenanceScheduleMonthlyRecurrenceTimeWindow(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "endTime": + suggest = "end_time" + elif key == "startTime": + suggest = "start_time" + elif key == "timeZone": + suggest = "time_zone" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in MaintenanceScheduleMonthlyRecurrenceTimeWindow. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + MaintenanceScheduleMonthlyRecurrenceTimeWindow.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + MaintenanceScheduleMonthlyRecurrenceTimeWindow.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + end_time: str, + start_time: str, + time_zone: str): + pulumi.set(__self__, "end_time", end_time) + pulumi.set(__self__, "start_time", start_time) + pulumi.set(__self__, "time_zone", time_zone) + + @property + @pulumi.getter(name="endTime") + def end_time(self) -> str: + return pulumi.get(self, "end_time") + + @property + @pulumi.getter(name="startTime") + def start_time(self) -> str: + return pulumi.get(self, "start_time") + + @property + @pulumi.getter(name="timeZone") + def time_zone(self) -> str: + return pulumi.get(self, "time_zone") + + +@pulumi.output_type +class MaintenanceScheduleOnceRecurrence(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "endTime": + suggest = "end_time" + elif key == "startTime": + suggest = "start_time" + elif key == "timeZone": + suggest = "time_zone" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in MaintenanceScheduleOnceRecurrence. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + MaintenanceScheduleOnceRecurrence.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + MaintenanceScheduleOnceRecurrence.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + end_time: str, + start_time: str, + time_zone: str): + pulumi.set(__self__, "end_time", end_time) + pulumi.set(__self__, "start_time", start_time) + pulumi.set(__self__, "time_zone", time_zone) + + @property + @pulumi.getter(name="endTime") + def end_time(self) -> str: + return pulumi.get(self, "end_time") + + @property + @pulumi.getter(name="startTime") + def start_time(self) -> str: + return pulumi.get(self, "start_time") + + @property + @pulumi.getter(name="timeZone") + def time_zone(self) -> str: + return pulumi.get(self, "time_zone") + + +@pulumi.output_type +class MaintenanceScheduleWeeklyRecurrence(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "dayOfWeek": + suggest = "day_of_week" + elif key == "recurrenceRange": + suggest = "recurrence_range" + elif key == "timeWindow": + suggest = "time_window" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in MaintenanceScheduleWeeklyRecurrence. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + MaintenanceScheduleWeeklyRecurrence.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + MaintenanceScheduleWeeklyRecurrence.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + day_of_week: str, + recurrence_range: 'outputs.MaintenanceScheduleWeeklyRecurrenceRecurrenceRange', + time_window: 'outputs.MaintenanceScheduleWeeklyRecurrenceTimeWindow'): + pulumi.set(__self__, "day_of_week", day_of_week) + pulumi.set(__self__, "recurrence_range", recurrence_range) + pulumi.set(__self__, "time_window", time_window) + + @property + @pulumi.getter(name="dayOfWeek") + def day_of_week(self) -> str: + return pulumi.get(self, "day_of_week") + + @property + @pulumi.getter(name="recurrenceRange") + def recurrence_range(self) -> 'outputs.MaintenanceScheduleWeeklyRecurrenceRecurrenceRange': + return pulumi.get(self, "recurrence_range") + + @property + @pulumi.getter(name="timeWindow") + def time_window(self) -> 'outputs.MaintenanceScheduleWeeklyRecurrenceTimeWindow': + return pulumi.get(self, "time_window") + + +@pulumi.output_type +class MaintenanceScheduleWeeklyRecurrenceRecurrenceRange(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "endDate": + suggest = "end_date" + elif key == "startDate": + suggest = "start_date" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in MaintenanceScheduleWeeklyRecurrenceRecurrenceRange. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + MaintenanceScheduleWeeklyRecurrenceRecurrenceRange.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + MaintenanceScheduleWeeklyRecurrenceRecurrenceRange.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + end_date: str, + start_date: str): + pulumi.set(__self__, "end_date", end_date) + pulumi.set(__self__, "start_date", start_date) + + @property + @pulumi.getter(name="endDate") + def end_date(self) -> str: + return pulumi.get(self, "end_date") + + @property + @pulumi.getter(name="startDate") + def start_date(self) -> str: + return pulumi.get(self, "start_date") + + +@pulumi.output_type +class MaintenanceScheduleWeeklyRecurrenceTimeWindow(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "endTime": + suggest = "end_time" + elif key == "startTime": + suggest = "start_time" + elif key == "timeZone": + suggest = "time_zone" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in MaintenanceScheduleWeeklyRecurrenceTimeWindow. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + MaintenanceScheduleWeeklyRecurrenceTimeWindow.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + MaintenanceScheduleWeeklyRecurrenceTimeWindow.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + end_time: str, + start_time: str, + time_zone: str): + pulumi.set(__self__, "end_time", end_time) + pulumi.set(__self__, "start_time", start_time) + pulumi.set(__self__, "time_zone", time_zone) + + @property + @pulumi.getter(name="endTime") + def end_time(self) -> str: + return pulumi.get(self, "end_time") + + @property + @pulumi.getter(name="startTime") + def start_time(self) -> str: + return pulumi.get(self, "start_time") + + @property + @pulumi.getter(name="timeZone") + def time_zone(self) -> str: + return pulumi.get(self, "time_zone") + + @pulumi.output_type class MaintenanceWindowMetadata(dict): @staticmethod @@ -40789,6 +41510,144 @@ def tolerated_threshold(self) -> Optional[int]: return pulumi.get(self, "tolerated_threshold") +@pulumi.output_type +class WebhookNotificationHeaders(dict): + def __init__(__self__, *, + headers: Sequence['outputs.WebhookNotificationHeadersHeader']): + """ + :param Sequence['WebhookNotificationHeadersHeaderArgs'] headers: An additional HTTP Header to include when sending requests + """ + pulumi.set(__self__, "headers", headers) + + @property + @pulumi.getter + def headers(self) -> Sequence['outputs.WebhookNotificationHeadersHeader']: + """ + An additional HTTP Header to include when sending requests + """ + return pulumi.get(self, "headers") + + +@pulumi.output_type +class WebhookNotificationHeadersHeader(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "secretValue": + suggest = "secret_value" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in WebhookNotificationHeadersHeader. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + WebhookNotificationHeadersHeader.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + WebhookNotificationHeadersHeader.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + name: str, + secret_value: Optional[str] = None, + value: Optional[str] = None): + """ + :param str name: The name of the notification configuration + """ + pulumi.set(__self__, "name", name) + if secret_value is not None: + pulumi.set(__self__, "secret_value", secret_value) + if value is not None: + pulumi.set(__self__, "value", value) + + @property + @pulumi.getter + def name(self) -> str: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter(name="secretValue") + def secret_value(self) -> Optional[str]: + return pulumi.get(self, "secret_value") + + @property + @pulumi.getter + def value(self) -> Optional[str]: + return pulumi.get(self, "value") + + +@pulumi.output_type +class XmattersNotificationHeaders(dict): + def __init__(__self__, *, + headers: Sequence['outputs.XmattersNotificationHeadersHeader']): + """ + :param Sequence['XmattersNotificationHeadersHeaderArgs'] headers: An additional HTTP Header to include when sending requests + """ + pulumi.set(__self__, "headers", headers) + + @property + @pulumi.getter + def headers(self) -> Sequence['outputs.XmattersNotificationHeadersHeader']: + """ + An additional HTTP Header to include when sending requests + """ + return pulumi.get(self, "headers") + + +@pulumi.output_type +class XmattersNotificationHeadersHeader(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "secretValue": + suggest = "secret_value" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in XmattersNotificationHeadersHeader. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + XmattersNotificationHeadersHeader.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + XmattersNotificationHeadersHeader.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + name: str, + secret_value: Optional[str] = None, + value: Optional[str] = None): + """ + :param str name: The name of the notification configuration + """ + pulumi.set(__self__, "name", name) + if secret_value is not None: + pulumi.set(__self__, "secret_value", secret_value) + if value is not None: + pulumi.set(__self__, "value", value) + + @property + @pulumi.getter + def name(self) -> str: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter(name="secretValue") + def secret_value(self) -> Optional[str]: + return pulumi.get(self, "secret_value") + + @property + @pulumi.getter + def value(self) -> Optional[str]: + return pulumi.get(self, "value") + + @pulumi.output_type class GetSyntheticLocationsLocationsResult(dict): def __init__(__self__, *, diff --git a/sdk/python/lbrlabs_pulumi_dynatrace/pager_duty_notification.py b/sdk/python/lbrlabs_pulumi_dynatrace/pager_duty_notification.py new file mode 100644 index 00000000..ab19b0af --- /dev/null +++ b/sdk/python/lbrlabs_pulumi_dynatrace/pager_duty_notification.py @@ -0,0 +1,384 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = ['PagerDutyNotificationArgs', 'PagerDutyNotification'] + +@pulumi.input_type +class PagerDutyNotificationArgs: + def __init__(__self__, *, + account: pulumi.Input[str], + active: pulumi.Input[bool], + profile: pulumi.Input[str], + service: pulumi.Input[str], + api_key: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a PagerDutyNotification resource. + :param pulumi.Input[str] account: The name of the PagerDuty account + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] service: The name of the PagerDuty Service + :param pulumi.Input[str] api_key: The API key to access PagerDuty + :param pulumi.Input[str] name: The name of the notification configuration + """ + pulumi.set(__self__, "account", account) + pulumi.set(__self__, "active", active) + pulumi.set(__self__, "profile", profile) + pulumi.set(__self__, "service", service) + if api_key is not None: + pulumi.set(__self__, "api_key", api_key) + if name is not None: + pulumi.set(__self__, "name", name) + + @property + @pulumi.getter + def account(self) -> pulumi.Input[str]: + """ + The name of the PagerDuty account + """ + return pulumi.get(self, "account") + + @account.setter + def account(self, value: pulumi.Input[str]): + pulumi.set(self, "account", value) + + @property + @pulumi.getter + def active(self) -> pulumi.Input[bool]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: pulumi.Input[bool]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter + def profile(self) -> pulumi.Input[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: pulumi.Input[str]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter + def service(self) -> pulumi.Input[str]: + """ + The name of the PagerDuty Service + """ + return pulumi.get(self, "service") + + @service.setter + def service(self, value: pulumi.Input[str]): + pulumi.set(self, "service", value) + + @property + @pulumi.getter(name="apiKey") + def api_key(self) -> Optional[pulumi.Input[str]]: + """ + The API key to access PagerDuty + """ + return pulumi.get(self, "api_key") + + @api_key.setter + def api_key(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "api_key", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + +@pulumi.input_type +class _PagerDutyNotificationState: + def __init__(__self__, *, + account: Optional[pulumi.Input[str]] = None, + active: Optional[pulumi.Input[bool]] = None, + api_key: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + service: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering PagerDutyNotification resources. + :param pulumi.Input[str] account: The name of the PagerDuty account + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] api_key: The API key to access PagerDuty + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] service: The name of the PagerDuty Service + """ + if account is not None: + pulumi.set(__self__, "account", account) + if active is not None: + pulumi.set(__self__, "active", active) + if api_key is not None: + pulumi.set(__self__, "api_key", api_key) + if name is not None: + pulumi.set(__self__, "name", name) + if profile is not None: + pulumi.set(__self__, "profile", profile) + if service is not None: + pulumi.set(__self__, "service", service) + + @property + @pulumi.getter + def account(self) -> Optional[pulumi.Input[str]]: + """ + The name of the PagerDuty account + """ + return pulumi.get(self, "account") + + @account.setter + def account(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "account", value) + + @property + @pulumi.getter + def active(self) -> Optional[pulumi.Input[bool]]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter(name="apiKey") + def api_key(self) -> Optional[pulumi.Input[str]]: + """ + The API key to access PagerDuty + """ + return pulumi.get(self, "api_key") + + @api_key.setter + def api_key(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "api_key", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def profile(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter + def service(self) -> Optional[pulumi.Input[str]]: + """ + The name of the PagerDuty Service + """ + return pulumi.get(self, "service") + + @service.setter + def service(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "service", value) + + +class PagerDutyNotification(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + account: Optional[pulumi.Input[str]] = None, + active: Optional[pulumi.Input[bool]] = None, + api_key: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + service: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + Create a PagerDutyNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] account: The name of the PagerDuty account + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] api_key: The API key to access PagerDuty + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] service: The name of the PagerDuty Service + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: PagerDutyNotificationArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Create a PagerDutyNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param PagerDutyNotificationArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(PagerDutyNotificationArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + account: Optional[pulumi.Input[str]] = None, + active: Optional[pulumi.Input[bool]] = None, + api_key: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + service: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = PagerDutyNotificationArgs.__new__(PagerDutyNotificationArgs) + + if account is None and not opts.urn: + raise TypeError("Missing required property 'account'") + __props__.__dict__["account"] = account + if active is None and not opts.urn: + raise TypeError("Missing required property 'active'") + __props__.__dict__["active"] = active + __props__.__dict__["api_key"] = None if api_key is None else pulumi.Output.secret(api_key) + __props__.__dict__["name"] = name + if profile is None and not opts.urn: + raise TypeError("Missing required property 'profile'") + __props__.__dict__["profile"] = profile + if service is None and not opts.urn: + raise TypeError("Missing required property 'service'") + __props__.__dict__["service"] = service + secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["apiKey"]) + opts = pulumi.ResourceOptions.merge(opts, secret_opts) + super(PagerDutyNotification, __self__).__init__( + 'dynatrace:index/pagerDutyNotification:PagerDutyNotification', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + account: Optional[pulumi.Input[str]] = None, + active: Optional[pulumi.Input[bool]] = None, + api_key: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + service: Optional[pulumi.Input[str]] = None) -> 'PagerDutyNotification': + """ + Get an existing PagerDutyNotification resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] account: The name of the PagerDuty account + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] api_key: The API key to access PagerDuty + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] service: The name of the PagerDuty Service + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _PagerDutyNotificationState.__new__(_PagerDutyNotificationState) + + __props__.__dict__["account"] = account + __props__.__dict__["active"] = active + __props__.__dict__["api_key"] = api_key + __props__.__dict__["name"] = name + __props__.__dict__["profile"] = profile + __props__.__dict__["service"] = service + return PagerDutyNotification(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def account(self) -> pulumi.Output[str]: + """ + The name of the PagerDuty account + """ + return pulumi.get(self, "account") + + @property + @pulumi.getter + def active(self) -> pulumi.Output[bool]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @property + @pulumi.getter(name="apiKey") + def api_key(self) -> pulumi.Output[Optional[str]]: + """ + The API key to access PagerDuty + """ + return pulumi.get(self, "api_key") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def profile(self) -> pulumi.Output[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @property + @pulumi.getter + def service(self) -> pulumi.Output[str]: + """ + The name of the PagerDuty Service + """ + return pulumi.get(self, "service") + diff --git a/sdk/python/lbrlabs_pulumi_dynatrace/service_now_notification.py b/sdk/python/lbrlabs_pulumi_dynatrace/service_now_notification.py new file mode 100644 index 00000000..83f71c7d --- /dev/null +++ b/sdk/python/lbrlabs_pulumi_dynatrace/service_now_notification.py @@ -0,0 +1,573 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = ['ServiceNowNotificationArgs', 'ServiceNowNotification'] + +@pulumi.input_type +class ServiceNowNotificationArgs: + def __init__(__self__, *, + active: pulumi.Input[bool], + incidents: pulumi.Input[bool], + message: pulumi.Input[str], + profile: pulumi.Input[str], + username: pulumi.Input[str], + events: Optional[pulumi.Input[bool]] = None, + instance: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + password: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a ServiceNowNotification resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[bool] incidents: Send incidents into ServiceNow ITSM + :param pulumi.Input[str] message: The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] username: The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + :param pulumi.Input[bool] events: Send events into ServiceNow ITOM + :param pulumi.Input[str] instance: The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] password: The password to the ServiceNow account + :param pulumi.Input[str] url: The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + """ + pulumi.set(__self__, "active", active) + pulumi.set(__self__, "incidents", incidents) + pulumi.set(__self__, "message", message) + pulumi.set(__self__, "profile", profile) + pulumi.set(__self__, "username", username) + if events is not None: + pulumi.set(__self__, "events", events) + if instance is not None: + pulumi.set(__self__, "instance", instance) + if name is not None: + pulumi.set(__self__, "name", name) + if password is not None: + pulumi.set(__self__, "password", password) + if url is not None: + pulumi.set(__self__, "url", url) + + @property + @pulumi.getter + def active(self) -> pulumi.Input[bool]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: pulumi.Input[bool]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter + def incidents(self) -> pulumi.Input[bool]: + """ + Send incidents into ServiceNow ITSM + """ + return pulumi.get(self, "incidents") + + @incidents.setter + def incidents(self, value: pulumi.Input[bool]): + pulumi.set(self, "incidents", value) + + @property + @pulumi.getter + def message(self) -> pulumi.Input[str]: + """ + The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "message") + + @message.setter + def message(self, value: pulumi.Input[str]): + pulumi.set(self, "message", value) + + @property + @pulumi.getter + def profile(self) -> pulumi.Input[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: pulumi.Input[str]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter + def username(self) -> pulumi.Input[str]: + """ + The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + """ + return pulumi.get(self, "username") + + @username.setter + def username(self, value: pulumi.Input[str]): + pulumi.set(self, "username", value) + + @property + @pulumi.getter + def events(self) -> Optional[pulumi.Input[bool]]: + """ + Send events into ServiceNow ITOM + """ + return pulumi.get(self, "events") + + @events.setter + def events(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "events", value) + + @property + @pulumi.getter + def instance(self) -> Optional[pulumi.Input[str]]: + """ + The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + """ + return pulumi.get(self, "instance") + + @instance.setter + def instance(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "instance", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def password(self) -> Optional[pulumi.Input[str]]: + """ + The password to the ServiceNow account + """ + return pulumi.get(self, "password") + + @password.setter + def password(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "password", value) + + @property + @pulumi.getter + def url(self) -> Optional[pulumi.Input[str]]: + """ + The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + """ + return pulumi.get(self, "url") + + @url.setter + def url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "url", value) + + +@pulumi.input_type +class _ServiceNowNotificationState: + def __init__(__self__, *, + active: Optional[pulumi.Input[bool]] = None, + events: Optional[pulumi.Input[bool]] = None, + incidents: Optional[pulumi.Input[bool]] = None, + instance: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + password: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None, + username: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering ServiceNowNotification resources. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[bool] events: Send events into ServiceNow ITOM + :param pulumi.Input[bool] incidents: Send incidents into ServiceNow ITSM + :param pulumi.Input[str] instance: The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + :param pulumi.Input[str] message: The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] password: The password to the ServiceNow account + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] url: The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + :param pulumi.Input[str] username: The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + """ + if active is not None: + pulumi.set(__self__, "active", active) + if events is not None: + pulumi.set(__self__, "events", events) + if incidents is not None: + pulumi.set(__self__, "incidents", incidents) + if instance is not None: + pulumi.set(__self__, "instance", instance) + if message is not None: + pulumi.set(__self__, "message", message) + if name is not None: + pulumi.set(__self__, "name", name) + if password is not None: + pulumi.set(__self__, "password", password) + if profile is not None: + pulumi.set(__self__, "profile", profile) + if url is not None: + pulumi.set(__self__, "url", url) + if username is not None: + pulumi.set(__self__, "username", username) + + @property + @pulumi.getter + def active(self) -> Optional[pulumi.Input[bool]]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter + def events(self) -> Optional[pulumi.Input[bool]]: + """ + Send events into ServiceNow ITOM + """ + return pulumi.get(self, "events") + + @events.setter + def events(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "events", value) + + @property + @pulumi.getter + def incidents(self) -> Optional[pulumi.Input[bool]]: + """ + Send incidents into ServiceNow ITSM + """ + return pulumi.get(self, "incidents") + + @incidents.setter + def incidents(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "incidents", value) + + @property + @pulumi.getter + def instance(self) -> Optional[pulumi.Input[str]]: + """ + The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + """ + return pulumi.get(self, "instance") + + @instance.setter + def instance(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "instance", value) + + @property + @pulumi.getter + def message(self) -> Optional[pulumi.Input[str]]: + """ + The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "message") + + @message.setter + def message(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "message", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def password(self) -> Optional[pulumi.Input[str]]: + """ + The password to the ServiceNow account + """ + return pulumi.get(self, "password") + + @password.setter + def password(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "password", value) + + @property + @pulumi.getter + def profile(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter + def url(self) -> Optional[pulumi.Input[str]]: + """ + The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + """ + return pulumi.get(self, "url") + + @url.setter + def url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "url", value) + + @property + @pulumi.getter + def username(self) -> Optional[pulumi.Input[str]]: + """ + The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + """ + return pulumi.get(self, "username") + + @username.setter + def username(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "username", value) + + +class ServiceNowNotification(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + events: Optional[pulumi.Input[bool]] = None, + incidents: Optional[pulumi.Input[bool]] = None, + instance: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + password: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None, + username: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + Create a ServiceNowNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[bool] events: Send events into ServiceNow ITOM + :param pulumi.Input[bool] incidents: Send incidents into ServiceNow ITSM + :param pulumi.Input[str] instance: The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + :param pulumi.Input[str] message: The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] password: The password to the ServiceNow account + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] url: The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + :param pulumi.Input[str] username: The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: ServiceNowNotificationArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Create a ServiceNowNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param ServiceNowNotificationArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(ServiceNowNotificationArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + events: Optional[pulumi.Input[bool]] = None, + incidents: Optional[pulumi.Input[bool]] = None, + instance: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + password: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None, + username: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = ServiceNowNotificationArgs.__new__(ServiceNowNotificationArgs) + + if active is None and not opts.urn: + raise TypeError("Missing required property 'active'") + __props__.__dict__["active"] = active + __props__.__dict__["events"] = events + if incidents is None and not opts.urn: + raise TypeError("Missing required property 'incidents'") + __props__.__dict__["incidents"] = incidents + __props__.__dict__["instance"] = instance + if message is None and not opts.urn: + raise TypeError("Missing required property 'message'") + __props__.__dict__["message"] = message + __props__.__dict__["name"] = name + __props__.__dict__["password"] = None if password is None else pulumi.Output.secret(password) + if profile is None and not opts.urn: + raise TypeError("Missing required property 'profile'") + __props__.__dict__["profile"] = profile + __props__.__dict__["url"] = url + if username is None and not opts.urn: + raise TypeError("Missing required property 'username'") + __props__.__dict__["username"] = username + secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["password"]) + opts = pulumi.ResourceOptions.merge(opts, secret_opts) + super(ServiceNowNotification, __self__).__init__( + 'dynatrace:index/serviceNowNotification:ServiceNowNotification', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + events: Optional[pulumi.Input[bool]] = None, + incidents: Optional[pulumi.Input[bool]] = None, + instance: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + password: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None, + username: Optional[pulumi.Input[str]] = None) -> 'ServiceNowNotification': + """ + Get an existing ServiceNowNotification resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[bool] events: Send events into ServiceNow ITOM + :param pulumi.Input[bool] incidents: Send incidents into ServiceNow ITSM + :param pulumi.Input[str] instance: The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + :param pulumi.Input[str] message: The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] password: The password to the ServiceNow account + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] url: The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + :param pulumi.Input[str] username: The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _ServiceNowNotificationState.__new__(_ServiceNowNotificationState) + + __props__.__dict__["active"] = active + __props__.__dict__["events"] = events + __props__.__dict__["incidents"] = incidents + __props__.__dict__["instance"] = instance + __props__.__dict__["message"] = message + __props__.__dict__["name"] = name + __props__.__dict__["password"] = password + __props__.__dict__["profile"] = profile + __props__.__dict__["url"] = url + __props__.__dict__["username"] = username + return ServiceNowNotification(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def active(self) -> pulumi.Output[bool]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @property + @pulumi.getter + def events(self) -> pulumi.Output[Optional[bool]]: + """ + Send events into ServiceNow ITOM + """ + return pulumi.get(self, "events") + + @property + @pulumi.getter + def incidents(self) -> pulumi.Output[bool]: + """ + Send incidents into ServiceNow ITSM + """ + return pulumi.get(self, "incidents") + + @property + @pulumi.getter + def instance(self) -> pulumi.Output[Optional[str]]: + """ + The ServiceNow instance identifier. It refers to the first part of your own ServiceNow URL. This field is mutually exclusive with the **url** field. You can only use one of them + """ + return pulumi.get(self, "instance") + + @property + @pulumi.getter + def message(self) -> pulumi.Output[str]: + """ + The content of the ServiceNow description. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "message") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def password(self) -> pulumi.Output[Optional[str]]: + """ + The password to the ServiceNow account + """ + return pulumi.get(self, "password") + + @property + @pulumi.getter + def profile(self) -> pulumi.Output[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @property + @pulumi.getter + def url(self) -> pulumi.Output[Optional[str]]: + """ + The URL of the on-premise ServiceNow installation. This field is mutually exclusive with the **instance** field. You can only use one of them + """ + return pulumi.get(self, "url") + + @property + @pulumi.getter + def username(self) -> pulumi.Output[str]: + """ + The username of the ServiceNow account. Make sure that your user account has the `rest_service`, `web_request_admin`, and `x_dynat_ruxit.Integration` roles + """ + return pulumi.get(self, "username") + diff --git a/sdk/python/lbrlabs_pulumi_dynatrace/slack_notification.py b/sdk/python/lbrlabs_pulumi_dynatrace/slack_notification.py new file mode 100644 index 00000000..a4ee5e70 --- /dev/null +++ b/sdk/python/lbrlabs_pulumi_dynatrace/slack_notification.py @@ -0,0 +1,385 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = ['SlackNotificationArgs', 'SlackNotification'] + +@pulumi.input_type +class SlackNotificationArgs: + def __init__(__self__, *, + active: pulumi.Input[bool], + channel: pulumi.Input[str], + message: pulumi.Input[str], + profile: pulumi.Input[str], + url: pulumi.Input[str], + name: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a SlackNotification resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] channel: The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + :param pulumi.Input[str] message: The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] url: The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + :param pulumi.Input[str] name: The name of the notification configuration + """ + pulumi.set(__self__, "active", active) + pulumi.set(__self__, "channel", channel) + pulumi.set(__self__, "message", message) + pulumi.set(__self__, "profile", profile) + pulumi.set(__self__, "url", url) + if name is not None: + pulumi.set(__self__, "name", name) + + @property + @pulumi.getter + def active(self) -> pulumi.Input[bool]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: pulumi.Input[bool]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter + def channel(self) -> pulumi.Input[str]: + """ + The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + """ + return pulumi.get(self, "channel") + + @channel.setter + def channel(self, value: pulumi.Input[str]): + pulumi.set(self, "channel", value) + + @property + @pulumi.getter + def message(self) -> pulumi.Input[str]: + """ + The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "message") + + @message.setter + def message(self, value: pulumi.Input[str]): + pulumi.set(self, "message", value) + + @property + @pulumi.getter + def profile(self) -> pulumi.Input[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: pulumi.Input[str]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter + def url(self) -> pulumi.Input[str]: + """ + The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + """ + return pulumi.get(self, "url") + + @url.setter + def url(self, value: pulumi.Input[str]): + pulumi.set(self, "url", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + +@pulumi.input_type +class _SlackNotificationState: + def __init__(__self__, *, + active: Optional[pulumi.Input[bool]] = None, + channel: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering SlackNotification resources. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] channel: The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + :param pulumi.Input[str] message: The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] url: The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + """ + if active is not None: + pulumi.set(__self__, "active", active) + if channel is not None: + pulumi.set(__self__, "channel", channel) + if message is not None: + pulumi.set(__self__, "message", message) + if name is not None: + pulumi.set(__self__, "name", name) + if profile is not None: + pulumi.set(__self__, "profile", profile) + if url is not None: + pulumi.set(__self__, "url", url) + + @property + @pulumi.getter + def active(self) -> Optional[pulumi.Input[bool]]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter + def channel(self) -> Optional[pulumi.Input[str]]: + """ + The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + """ + return pulumi.get(self, "channel") + + @channel.setter + def channel(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "channel", value) + + @property + @pulumi.getter + def message(self) -> Optional[pulumi.Input[str]]: + """ + The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "message") + + @message.setter + def message(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "message", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def profile(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter + def url(self) -> Optional[pulumi.Input[str]]: + """ + The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + """ + return pulumi.get(self, "url") + + @url.setter + def url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "url", value) + + +class SlackNotification(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + channel: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + Create a SlackNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] channel: The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + :param pulumi.Input[str] message: The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] url: The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: SlackNotificationArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Create a SlackNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param SlackNotificationArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(SlackNotificationArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + channel: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = SlackNotificationArgs.__new__(SlackNotificationArgs) + + if active is None and not opts.urn: + raise TypeError("Missing required property 'active'") + __props__.__dict__["active"] = active + if channel is None and not opts.urn: + raise TypeError("Missing required property 'channel'") + __props__.__dict__["channel"] = channel + if message is None and not opts.urn: + raise TypeError("Missing required property 'message'") + __props__.__dict__["message"] = message + __props__.__dict__["name"] = name + if profile is None and not opts.urn: + raise TypeError("Missing required property 'profile'") + __props__.__dict__["profile"] = profile + if url is None and not opts.urn: + raise TypeError("Missing required property 'url'") + __props__.__dict__["url"] = None if url is None else pulumi.Output.secret(url) + secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["url"]) + opts = pulumi.ResourceOptions.merge(opts, secret_opts) + super(SlackNotification, __self__).__init__( + 'dynatrace:index/slackNotification:SlackNotification', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + channel: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None) -> 'SlackNotification': + """ + Get an existing SlackNotification resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] channel: The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + :param pulumi.Input[str] message: The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] url: The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _SlackNotificationState.__new__(_SlackNotificationState) + + __props__.__dict__["active"] = active + __props__.__dict__["channel"] = channel + __props__.__dict__["message"] = message + __props__.__dict__["name"] = name + __props__.__dict__["profile"] = profile + __props__.__dict__["url"] = url + return SlackNotification(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def active(self) -> pulumi.Output[bool]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @property + @pulumi.getter + def channel(self) -> pulumi.Output[str]: + """ + The channel (for example, `#general`) or the user (for example, `@john.smith`) to send the message to + """ + return pulumi.get(self, "channel") + + @property + @pulumi.getter + def message(self) -> pulumi.Output[str]: + """ + The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "message") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def profile(self) -> pulumi.Output[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @property + @pulumi.getter + def url(self) -> pulumi.Output[str]: + """ + The URL of the Slack WebHook. This is confidential information, therefore GET requests return this field with the `null` value, and it is optional for PUT requests + """ + return pulumi.get(self, "url") + diff --git a/sdk/python/lbrlabs_pulumi_dynatrace/trrello_notification.py b/sdk/python/lbrlabs_pulumi_dynatrace/trrello_notification.py new file mode 100644 index 00000000..9909daef --- /dev/null +++ b/sdk/python/lbrlabs_pulumi_dynatrace/trrello_notification.py @@ -0,0 +1,574 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = ['TrrelloNotificationArgs', 'TrrelloNotification'] + +@pulumi.input_type +class TrrelloNotificationArgs: + def __init__(__self__, *, + active: pulumi.Input[bool], + application_key: pulumi.Input[str], + board_id: pulumi.Input[str], + description: pulumi.Input[str], + list_id: pulumi.Input[str], + profile: pulumi.Input[str], + resolved_list_id: pulumi.Input[str], + text: pulumi.Input[str], + authorization_token: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a TrrelloNotification resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] application_key: The application key for the Trello account + :param pulumi.Input[str] board_id: The Trello board to which the card should be assigned + :param pulumi.Input[str] description: The description of the Trello card. You can use same placeholders as in card text + :param pulumi.Input[str] list_id: The Trello list to which the card should be assigned + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] resolved_list_id: The Trello list to which the card of the resolved problem should be assigned + :param pulumi.Input[str] text: The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] authorization_token: The application token for the Trello account + :param pulumi.Input[str] name: The name of the notification configuration + """ + pulumi.set(__self__, "active", active) + pulumi.set(__self__, "application_key", application_key) + pulumi.set(__self__, "board_id", board_id) + pulumi.set(__self__, "description", description) + pulumi.set(__self__, "list_id", list_id) + pulumi.set(__self__, "profile", profile) + pulumi.set(__self__, "resolved_list_id", resolved_list_id) + pulumi.set(__self__, "text", text) + if authorization_token is not None: + pulumi.set(__self__, "authorization_token", authorization_token) + if name is not None: + pulumi.set(__self__, "name", name) + + @property + @pulumi.getter + def active(self) -> pulumi.Input[bool]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: pulumi.Input[bool]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter(name="applicationKey") + def application_key(self) -> pulumi.Input[str]: + """ + The application key for the Trello account + """ + return pulumi.get(self, "application_key") + + @application_key.setter + def application_key(self, value: pulumi.Input[str]): + pulumi.set(self, "application_key", value) + + @property + @pulumi.getter(name="boardId") + def board_id(self) -> pulumi.Input[str]: + """ + The Trello board to which the card should be assigned + """ + return pulumi.get(self, "board_id") + + @board_id.setter + def board_id(self, value: pulumi.Input[str]): + pulumi.set(self, "board_id", value) + + @property + @pulumi.getter + def description(self) -> pulumi.Input[str]: + """ + The description of the Trello card. You can use same placeholders as in card text + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: pulumi.Input[str]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter(name="listId") + def list_id(self) -> pulumi.Input[str]: + """ + The Trello list to which the card should be assigned + """ + return pulumi.get(self, "list_id") + + @list_id.setter + def list_id(self, value: pulumi.Input[str]): + pulumi.set(self, "list_id", value) + + @property + @pulumi.getter + def profile(self) -> pulumi.Input[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: pulumi.Input[str]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter(name="resolvedListId") + def resolved_list_id(self) -> pulumi.Input[str]: + """ + The Trello list to which the card of the resolved problem should be assigned + """ + return pulumi.get(self, "resolved_list_id") + + @resolved_list_id.setter + def resolved_list_id(self, value: pulumi.Input[str]): + pulumi.set(self, "resolved_list_id", value) + + @property + @pulumi.getter + def text(self) -> pulumi.Input[str]: + """ + The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "text") + + @text.setter + def text(self, value: pulumi.Input[str]): + pulumi.set(self, "text", value) + + @property + @pulumi.getter(name="authorizationToken") + def authorization_token(self) -> Optional[pulumi.Input[str]]: + """ + The application token for the Trello account + """ + return pulumi.get(self, "authorization_token") + + @authorization_token.setter + def authorization_token(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "authorization_token", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + +@pulumi.input_type +class _TrrelloNotificationState: + def __init__(__self__, *, + active: Optional[pulumi.Input[bool]] = None, + application_key: Optional[pulumi.Input[str]] = None, + authorization_token: Optional[pulumi.Input[str]] = None, + board_id: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + list_id: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + resolved_list_id: Optional[pulumi.Input[str]] = None, + text: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering TrrelloNotification resources. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] application_key: The application key for the Trello account + :param pulumi.Input[str] authorization_token: The application token for the Trello account + :param pulumi.Input[str] board_id: The Trello board to which the card should be assigned + :param pulumi.Input[str] description: The description of the Trello card. You can use same placeholders as in card text + :param pulumi.Input[str] list_id: The Trello list to which the card should be assigned + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] resolved_list_id: The Trello list to which the card of the resolved problem should be assigned + :param pulumi.Input[str] text: The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + if active is not None: + pulumi.set(__self__, "active", active) + if application_key is not None: + pulumi.set(__self__, "application_key", application_key) + if authorization_token is not None: + pulumi.set(__self__, "authorization_token", authorization_token) + if board_id is not None: + pulumi.set(__self__, "board_id", board_id) + if description is not None: + pulumi.set(__self__, "description", description) + if list_id is not None: + pulumi.set(__self__, "list_id", list_id) + if name is not None: + pulumi.set(__self__, "name", name) + if profile is not None: + pulumi.set(__self__, "profile", profile) + if resolved_list_id is not None: + pulumi.set(__self__, "resolved_list_id", resolved_list_id) + if text is not None: + pulumi.set(__self__, "text", text) + + @property + @pulumi.getter + def active(self) -> Optional[pulumi.Input[bool]]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter(name="applicationKey") + def application_key(self) -> Optional[pulumi.Input[str]]: + """ + The application key for the Trello account + """ + return pulumi.get(self, "application_key") + + @application_key.setter + def application_key(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "application_key", value) + + @property + @pulumi.getter(name="authorizationToken") + def authorization_token(self) -> Optional[pulumi.Input[str]]: + """ + The application token for the Trello account + """ + return pulumi.get(self, "authorization_token") + + @authorization_token.setter + def authorization_token(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "authorization_token", value) + + @property + @pulumi.getter(name="boardId") + def board_id(self) -> Optional[pulumi.Input[str]]: + """ + The Trello board to which the card should be assigned + """ + return pulumi.get(self, "board_id") + + @board_id.setter + def board_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "board_id", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + The description of the Trello card. You can use same placeholders as in card text + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter(name="listId") + def list_id(self) -> Optional[pulumi.Input[str]]: + """ + The Trello list to which the card should be assigned + """ + return pulumi.get(self, "list_id") + + @list_id.setter + def list_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "list_id", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def profile(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter(name="resolvedListId") + def resolved_list_id(self) -> Optional[pulumi.Input[str]]: + """ + The Trello list to which the card of the resolved problem should be assigned + """ + return pulumi.get(self, "resolved_list_id") + + @resolved_list_id.setter + def resolved_list_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "resolved_list_id", value) + + @property + @pulumi.getter + def text(self) -> Optional[pulumi.Input[str]]: + """ + The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "text") + + @text.setter + def text(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "text", value) + + +class TrrelloNotification(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + application_key: Optional[pulumi.Input[str]] = None, + authorization_token: Optional[pulumi.Input[str]] = None, + board_id: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + list_id: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + resolved_list_id: Optional[pulumi.Input[str]] = None, + text: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + Create a TrrelloNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] application_key: The application key for the Trello account + :param pulumi.Input[str] authorization_token: The application token for the Trello account + :param pulumi.Input[str] board_id: The Trello board to which the card should be assigned + :param pulumi.Input[str] description: The description of the Trello card. You can use same placeholders as in card text + :param pulumi.Input[str] list_id: The Trello list to which the card should be assigned + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] resolved_list_id: The Trello list to which the card of the resolved problem should be assigned + :param pulumi.Input[str] text: The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: TrrelloNotificationArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Create a TrrelloNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param TrrelloNotificationArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(TrrelloNotificationArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + application_key: Optional[pulumi.Input[str]] = None, + authorization_token: Optional[pulumi.Input[str]] = None, + board_id: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + list_id: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + resolved_list_id: Optional[pulumi.Input[str]] = None, + text: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = TrrelloNotificationArgs.__new__(TrrelloNotificationArgs) + + if active is None and not opts.urn: + raise TypeError("Missing required property 'active'") + __props__.__dict__["active"] = active + if application_key is None and not opts.urn: + raise TypeError("Missing required property 'application_key'") + __props__.__dict__["application_key"] = application_key + __props__.__dict__["authorization_token"] = authorization_token + if board_id is None and not opts.urn: + raise TypeError("Missing required property 'board_id'") + __props__.__dict__["board_id"] = board_id + if description is None and not opts.urn: + raise TypeError("Missing required property 'description'") + __props__.__dict__["description"] = description + if list_id is None and not opts.urn: + raise TypeError("Missing required property 'list_id'") + __props__.__dict__["list_id"] = list_id + __props__.__dict__["name"] = name + if profile is None and not opts.urn: + raise TypeError("Missing required property 'profile'") + __props__.__dict__["profile"] = profile + if resolved_list_id is None and not opts.urn: + raise TypeError("Missing required property 'resolved_list_id'") + __props__.__dict__["resolved_list_id"] = resolved_list_id + if text is None and not opts.urn: + raise TypeError("Missing required property 'text'") + __props__.__dict__["text"] = text + super(TrrelloNotification, __self__).__init__( + 'dynatrace:index/trrelloNotification:TrrelloNotification', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + application_key: Optional[pulumi.Input[str]] = None, + authorization_token: Optional[pulumi.Input[str]] = None, + board_id: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + list_id: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + resolved_list_id: Optional[pulumi.Input[str]] = None, + text: Optional[pulumi.Input[str]] = None) -> 'TrrelloNotification': + """ + Get an existing TrrelloNotification resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] application_key: The application key for the Trello account + :param pulumi.Input[str] authorization_token: The application token for the Trello account + :param pulumi.Input[str] board_id: The Trello board to which the card should be assigned + :param pulumi.Input[str] description: The description of the Trello card. You can use same placeholders as in card text + :param pulumi.Input[str] list_id: The Trello list to which the card should be assigned + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] resolved_list_id: The Trello list to which the card of the resolved problem should be assigned + :param pulumi.Input[str] text: The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _TrrelloNotificationState.__new__(_TrrelloNotificationState) + + __props__.__dict__["active"] = active + __props__.__dict__["application_key"] = application_key + __props__.__dict__["authorization_token"] = authorization_token + __props__.__dict__["board_id"] = board_id + __props__.__dict__["description"] = description + __props__.__dict__["list_id"] = list_id + __props__.__dict__["name"] = name + __props__.__dict__["profile"] = profile + __props__.__dict__["resolved_list_id"] = resolved_list_id + __props__.__dict__["text"] = text + return TrrelloNotification(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def active(self) -> pulumi.Output[bool]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @property + @pulumi.getter(name="applicationKey") + def application_key(self) -> pulumi.Output[str]: + """ + The application key for the Trello account + """ + return pulumi.get(self, "application_key") + + @property + @pulumi.getter(name="authorizationToken") + def authorization_token(self) -> pulumi.Output[Optional[str]]: + """ + The application token for the Trello account + """ + return pulumi.get(self, "authorization_token") + + @property + @pulumi.getter(name="boardId") + def board_id(self) -> pulumi.Output[str]: + """ + The Trello board to which the card should be assigned + """ + return pulumi.get(self, "board_id") + + @property + @pulumi.getter + def description(self) -> pulumi.Output[str]: + """ + The description of the Trello card. You can use same placeholders as in card text + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="listId") + def list_id(self) -> pulumi.Output[str]: + """ + The Trello list to which the card should be assigned + """ + return pulumi.get(self, "list_id") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def profile(self) -> pulumi.Output[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @property + @pulumi.getter(name="resolvedListId") + def resolved_list_id(self) -> pulumi.Output[str]: + """ + The Trello list to which the card of the resolved problem should be assigned + """ + return pulumi.get(self, "resolved_list_id") + + @property + @pulumi.getter + def text(self) -> pulumi.Output[str]: + """ + The text of the generated Trello card. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "text") + diff --git a/sdk/python/lbrlabs_pulumi_dynatrace/victor_ops_notification.py b/sdk/python/lbrlabs_pulumi_dynatrace/victor_ops_notification.py new file mode 100644 index 00000000..d7bf258b --- /dev/null +++ b/sdk/python/lbrlabs_pulumi_dynatrace/victor_ops_notification.py @@ -0,0 +1,384 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = ['VictorOpsNotificationArgs', 'VictorOpsNotification'] + +@pulumi.input_type +class VictorOpsNotificationArgs: + def __init__(__self__, *, + active: pulumi.Input[bool], + message: pulumi.Input[str], + profile: pulumi.Input[str], + routing_key: pulumi.Input[str], + api_key: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a VictorOpsNotification resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] message: The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] routing_key: The routing key, defining the group to be notified + :param pulumi.Input[str] api_key: The API key for the target VictorOps account + :param pulumi.Input[str] name: The name of the notification configuration + """ + pulumi.set(__self__, "active", active) + pulumi.set(__self__, "message", message) + pulumi.set(__self__, "profile", profile) + pulumi.set(__self__, "routing_key", routing_key) + if api_key is not None: + pulumi.set(__self__, "api_key", api_key) + if name is not None: + pulumi.set(__self__, "name", name) + + @property + @pulumi.getter + def active(self) -> pulumi.Input[bool]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: pulumi.Input[bool]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter + def message(self) -> pulumi.Input[str]: + """ + The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + """ + return pulumi.get(self, "message") + + @message.setter + def message(self, value: pulumi.Input[str]): + pulumi.set(self, "message", value) + + @property + @pulumi.getter + def profile(self) -> pulumi.Input[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: pulumi.Input[str]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter(name="routingKey") + def routing_key(self) -> pulumi.Input[str]: + """ + The routing key, defining the group to be notified + """ + return pulumi.get(self, "routing_key") + + @routing_key.setter + def routing_key(self, value: pulumi.Input[str]): + pulumi.set(self, "routing_key", value) + + @property + @pulumi.getter(name="apiKey") + def api_key(self) -> Optional[pulumi.Input[str]]: + """ + The API key for the target VictorOps account + """ + return pulumi.get(self, "api_key") + + @api_key.setter + def api_key(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "api_key", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + +@pulumi.input_type +class _VictorOpsNotificationState: + def __init__(__self__, *, + active: Optional[pulumi.Input[bool]] = None, + api_key: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + routing_key: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering VictorOpsNotification resources. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] api_key: The API key for the target VictorOps account + :param pulumi.Input[str] message: The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] routing_key: The routing key, defining the group to be notified + """ + if active is not None: + pulumi.set(__self__, "active", active) + if api_key is not None: + pulumi.set(__self__, "api_key", api_key) + if message is not None: + pulumi.set(__self__, "message", message) + if name is not None: + pulumi.set(__self__, "name", name) + if profile is not None: + pulumi.set(__self__, "profile", profile) + if routing_key is not None: + pulumi.set(__self__, "routing_key", routing_key) + + @property + @pulumi.getter + def active(self) -> Optional[pulumi.Input[bool]]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter(name="apiKey") + def api_key(self) -> Optional[pulumi.Input[str]]: + """ + The API key for the target VictorOps account + """ + return pulumi.get(self, "api_key") + + @api_key.setter + def api_key(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "api_key", value) + + @property + @pulumi.getter + def message(self) -> Optional[pulumi.Input[str]]: + """ + The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + """ + return pulumi.get(self, "message") + + @message.setter + def message(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "message", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def profile(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter(name="routingKey") + def routing_key(self) -> Optional[pulumi.Input[str]]: + """ + The routing key, defining the group to be notified + """ + return pulumi.get(self, "routing_key") + + @routing_key.setter + def routing_key(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "routing_key", value) + + +class VictorOpsNotification(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + api_key: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + routing_key: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + Create a VictorOpsNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] api_key: The API key for the target VictorOps account + :param pulumi.Input[str] message: The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] routing_key: The routing key, defining the group to be notified + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: VictorOpsNotificationArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Create a VictorOpsNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param VictorOpsNotificationArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(VictorOpsNotificationArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + api_key: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + routing_key: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = VictorOpsNotificationArgs.__new__(VictorOpsNotificationArgs) + + if active is None and not opts.urn: + raise TypeError("Missing required property 'active'") + __props__.__dict__["active"] = active + __props__.__dict__["api_key"] = None if api_key is None else pulumi.Output.secret(api_key) + if message is None and not opts.urn: + raise TypeError("Missing required property 'message'") + __props__.__dict__["message"] = message + __props__.__dict__["name"] = name + if profile is None and not opts.urn: + raise TypeError("Missing required property 'profile'") + __props__.__dict__["profile"] = profile + if routing_key is None and not opts.urn: + raise TypeError("Missing required property 'routing_key'") + __props__.__dict__["routing_key"] = routing_key + secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["apiKey"]) + opts = pulumi.ResourceOptions.merge(opts, secret_opts) + super(VictorOpsNotification, __self__).__init__( + 'dynatrace:index/victorOpsNotification:VictorOpsNotification', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + api_key: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + routing_key: Optional[pulumi.Input[str]] = None) -> 'VictorOpsNotification': + """ + Get an existing VictorOpsNotification resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] api_key: The API key for the target VictorOps account + :param pulumi.Input[str] message: The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] routing_key: The routing key, defining the group to be notified + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _VictorOpsNotificationState.__new__(_VictorOpsNotificationState) + + __props__.__dict__["active"] = active + __props__.__dict__["api_key"] = api_key + __props__.__dict__["message"] = message + __props__.__dict__["name"] = name + __props__.__dict__["profile"] = profile + __props__.__dict__["routing_key"] = routing_key + return VictorOpsNotification(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def active(self) -> pulumi.Output[bool]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @property + @pulumi.getter(name="apiKey") + def api_key(self) -> pulumi.Output[Optional[str]]: + """ + The API key for the target VictorOps account + """ + return pulumi.get(self, "api_key") + + @property + @pulumi.getter + def message(self) -> pulumi.Output[str]: + """ + The content of the message. You can use the following placeholders: * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED` + """ + return pulumi.get(self, "message") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def profile(self) -> pulumi.Output[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @property + @pulumi.getter(name="routingKey") + def routing_key(self) -> pulumi.Output[str]: + """ + The routing key, defining the group to be notified + """ + return pulumi.get(self, "routing_key") + diff --git a/sdk/python/lbrlabs_pulumi_dynatrace/webhook_notification.py b/sdk/python/lbrlabs_pulumi_dynatrace/webhook_notification.py new file mode 100644 index 00000000..33a69688 --- /dev/null +++ b/sdk/python/lbrlabs_pulumi_dynatrace/webhook_notification.py @@ -0,0 +1,525 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities +from . import outputs +from ._inputs import * + +__all__ = ['WebhookNotificationArgs', 'WebhookNotification'] + +@pulumi.input_type +class WebhookNotificationArgs: + def __init__(__self__, *, + active: pulumi.Input[bool], + payload: pulumi.Input[str], + profile: pulumi.Input[str], + url: pulumi.Input[str], + headers: Optional[pulumi.Input['WebhookNotificationHeadersArgs']] = None, + insecure: Optional[pulumi.Input[bool]] = None, + name: Optional[pulumi.Input[str]] = None, + notify_closed_problems: Optional[pulumi.Input[bool]] = None, + notify_event_merges: Optional[pulumi.Input[bool]] = None): + """ + The set of arguments for constructing a WebhookNotification resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] payload: The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] url: The URL of the WebHook endpoint + :param pulumi.Input['WebhookNotificationHeadersArgs'] headers: A list of the additional HTTP headers + :param pulumi.Input[bool] insecure: Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[bool] notify_closed_problems: Send email if problem is closed + :param pulumi.Input[bool] notify_event_merges: Call webhook if new events merge into existing problems + """ + pulumi.set(__self__, "active", active) + pulumi.set(__self__, "payload", payload) + pulumi.set(__self__, "profile", profile) + pulumi.set(__self__, "url", url) + if headers is not None: + pulumi.set(__self__, "headers", headers) + if insecure is not None: + pulumi.set(__self__, "insecure", insecure) + if name is not None: + pulumi.set(__self__, "name", name) + if notify_closed_problems is not None: + pulumi.set(__self__, "notify_closed_problems", notify_closed_problems) + if notify_event_merges is not None: + pulumi.set(__self__, "notify_event_merges", notify_event_merges) + + @property + @pulumi.getter + def active(self) -> pulumi.Input[bool]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: pulumi.Input[bool]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter + def payload(self) -> pulumi.Input[str]: + """ + The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "payload") + + @payload.setter + def payload(self, value: pulumi.Input[str]): + pulumi.set(self, "payload", value) + + @property + @pulumi.getter + def profile(self) -> pulumi.Input[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: pulumi.Input[str]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter + def url(self) -> pulumi.Input[str]: + """ + The URL of the WebHook endpoint + """ + return pulumi.get(self, "url") + + @url.setter + def url(self, value: pulumi.Input[str]): + pulumi.set(self, "url", value) + + @property + @pulumi.getter + def headers(self) -> Optional[pulumi.Input['WebhookNotificationHeadersArgs']]: + """ + A list of the additional HTTP headers + """ + return pulumi.get(self, "headers") + + @headers.setter + def headers(self, value: Optional[pulumi.Input['WebhookNotificationHeadersArgs']]): + pulumi.set(self, "headers", value) + + @property + @pulumi.getter + def insecure(self) -> Optional[pulumi.Input[bool]]: + """ + Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + """ + return pulumi.get(self, "insecure") + + @insecure.setter + def insecure(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "insecure", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="notifyClosedProblems") + def notify_closed_problems(self) -> Optional[pulumi.Input[bool]]: + """ + Send email if problem is closed + """ + return pulumi.get(self, "notify_closed_problems") + + @notify_closed_problems.setter + def notify_closed_problems(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "notify_closed_problems", value) + + @property + @pulumi.getter(name="notifyEventMerges") + def notify_event_merges(self) -> Optional[pulumi.Input[bool]]: + """ + Call webhook if new events merge into existing problems + """ + return pulumi.get(self, "notify_event_merges") + + @notify_event_merges.setter + def notify_event_merges(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "notify_event_merges", value) + + +@pulumi.input_type +class _WebhookNotificationState: + def __init__(__self__, *, + active: Optional[pulumi.Input[bool]] = None, + headers: Optional[pulumi.Input['WebhookNotificationHeadersArgs']] = None, + insecure: Optional[pulumi.Input[bool]] = None, + name: Optional[pulumi.Input[str]] = None, + notify_closed_problems: Optional[pulumi.Input[bool]] = None, + notify_event_merges: Optional[pulumi.Input[bool]] = None, + payload: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering WebhookNotification resources. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input['WebhookNotificationHeadersArgs'] headers: A list of the additional HTTP headers + :param pulumi.Input[bool] insecure: Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[bool] notify_closed_problems: Send email if problem is closed + :param pulumi.Input[bool] notify_event_merges: Call webhook if new events merge into existing problems + :param pulumi.Input[str] payload: The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] url: The URL of the WebHook endpoint + """ + if active is not None: + pulumi.set(__self__, "active", active) + if headers is not None: + pulumi.set(__self__, "headers", headers) + if insecure is not None: + pulumi.set(__self__, "insecure", insecure) + if name is not None: + pulumi.set(__self__, "name", name) + if notify_closed_problems is not None: + pulumi.set(__self__, "notify_closed_problems", notify_closed_problems) + if notify_event_merges is not None: + pulumi.set(__self__, "notify_event_merges", notify_event_merges) + if payload is not None: + pulumi.set(__self__, "payload", payload) + if profile is not None: + pulumi.set(__self__, "profile", profile) + if url is not None: + pulumi.set(__self__, "url", url) + + @property + @pulumi.getter + def active(self) -> Optional[pulumi.Input[bool]]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter + def headers(self) -> Optional[pulumi.Input['WebhookNotificationHeadersArgs']]: + """ + A list of the additional HTTP headers + """ + return pulumi.get(self, "headers") + + @headers.setter + def headers(self, value: Optional[pulumi.Input['WebhookNotificationHeadersArgs']]): + pulumi.set(self, "headers", value) + + @property + @pulumi.getter + def insecure(self) -> Optional[pulumi.Input[bool]]: + """ + Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + """ + return pulumi.get(self, "insecure") + + @insecure.setter + def insecure(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "insecure", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="notifyClosedProblems") + def notify_closed_problems(self) -> Optional[pulumi.Input[bool]]: + """ + Send email if problem is closed + """ + return pulumi.get(self, "notify_closed_problems") + + @notify_closed_problems.setter + def notify_closed_problems(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "notify_closed_problems", value) + + @property + @pulumi.getter(name="notifyEventMerges") + def notify_event_merges(self) -> Optional[pulumi.Input[bool]]: + """ + Call webhook if new events merge into existing problems + """ + return pulumi.get(self, "notify_event_merges") + + @notify_event_merges.setter + def notify_event_merges(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "notify_event_merges", value) + + @property + @pulumi.getter + def payload(self) -> Optional[pulumi.Input[str]]: + """ + The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "payload") + + @payload.setter + def payload(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "payload", value) + + @property + @pulumi.getter + def profile(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter + def url(self) -> Optional[pulumi.Input[str]]: + """ + The URL of the WebHook endpoint + """ + return pulumi.get(self, "url") + + @url.setter + def url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "url", value) + + +class WebhookNotification(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + headers: Optional[pulumi.Input[pulumi.InputType['WebhookNotificationHeadersArgs']]] = None, + insecure: Optional[pulumi.Input[bool]] = None, + name: Optional[pulumi.Input[str]] = None, + notify_closed_problems: Optional[pulumi.Input[bool]] = None, + notify_event_merges: Optional[pulumi.Input[bool]] = None, + payload: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + Create a WebhookNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[pulumi.InputType['WebhookNotificationHeadersArgs']] headers: A list of the additional HTTP headers + :param pulumi.Input[bool] insecure: Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[bool] notify_closed_problems: Send email if problem is closed + :param pulumi.Input[bool] notify_event_merges: Call webhook if new events merge into existing problems + :param pulumi.Input[str] payload: The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] url: The URL of the WebHook endpoint + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: WebhookNotificationArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Create a WebhookNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param WebhookNotificationArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(WebhookNotificationArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + headers: Optional[pulumi.Input[pulumi.InputType['WebhookNotificationHeadersArgs']]] = None, + insecure: Optional[pulumi.Input[bool]] = None, + name: Optional[pulumi.Input[str]] = None, + notify_closed_problems: Optional[pulumi.Input[bool]] = None, + notify_event_merges: Optional[pulumi.Input[bool]] = None, + payload: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = WebhookNotificationArgs.__new__(WebhookNotificationArgs) + + if active is None and not opts.urn: + raise TypeError("Missing required property 'active'") + __props__.__dict__["active"] = active + __props__.__dict__["headers"] = headers + __props__.__dict__["insecure"] = insecure + __props__.__dict__["name"] = name + __props__.__dict__["notify_closed_problems"] = notify_closed_problems + __props__.__dict__["notify_event_merges"] = notify_event_merges + if payload is None and not opts.urn: + raise TypeError("Missing required property 'payload'") + __props__.__dict__["payload"] = payload + if profile is None and not opts.urn: + raise TypeError("Missing required property 'profile'") + __props__.__dict__["profile"] = profile + if url is None and not opts.urn: + raise TypeError("Missing required property 'url'") + __props__.__dict__["url"] = url + super(WebhookNotification, __self__).__init__( + 'dynatrace:index/webhookNotification:WebhookNotification', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + headers: Optional[pulumi.Input[pulumi.InputType['WebhookNotificationHeadersArgs']]] = None, + insecure: Optional[pulumi.Input[bool]] = None, + name: Optional[pulumi.Input[str]] = None, + notify_closed_problems: Optional[pulumi.Input[bool]] = None, + notify_event_merges: Optional[pulumi.Input[bool]] = None, + payload: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None) -> 'WebhookNotification': + """ + Get an existing WebhookNotification resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[pulumi.InputType['WebhookNotificationHeadersArgs']] headers: A list of the additional HTTP headers + :param pulumi.Input[bool] insecure: Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[bool] notify_closed_problems: Send email if problem is closed + :param pulumi.Input[bool] notify_event_merges: Call webhook if new events merge into existing problems + :param pulumi.Input[str] payload: The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] url: The URL of the WebHook endpoint + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _WebhookNotificationState.__new__(_WebhookNotificationState) + + __props__.__dict__["active"] = active + __props__.__dict__["headers"] = headers + __props__.__dict__["insecure"] = insecure + __props__.__dict__["name"] = name + __props__.__dict__["notify_closed_problems"] = notify_closed_problems + __props__.__dict__["notify_event_merges"] = notify_event_merges + __props__.__dict__["payload"] = payload + __props__.__dict__["profile"] = profile + __props__.__dict__["url"] = url + return WebhookNotification(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def active(self) -> pulumi.Output[bool]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @property + @pulumi.getter + def headers(self) -> pulumi.Output[Optional['outputs.WebhookNotificationHeaders']]: + """ + A list of the additional HTTP headers + """ + return pulumi.get(self, "headers") + + @property + @pulumi.getter + def insecure(self) -> pulumi.Output[Optional[bool]]: + """ + Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + """ + return pulumi.get(self, "insecure") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter(name="notifyClosedProblems") + def notify_closed_problems(self) -> pulumi.Output[Optional[bool]]: + """ + Send email if problem is closed + """ + return pulumi.get(self, "notify_closed_problems") + + @property + @pulumi.getter(name="notifyEventMerges") + def notify_event_merges(self) -> pulumi.Output[Optional[bool]]: + """ + Call webhook if new events merge into existing problems + """ + return pulumi.get(self, "notify_event_merges") + + @property + @pulumi.getter + def payload(self) -> pulumi.Output[str]: + """ + The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "payload") + + @property + @pulumi.getter + def profile(self) -> pulumi.Output[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @property + @pulumi.getter + def url(self) -> pulumi.Output[str]: + """ + The URL of the WebHook endpoint + """ + return pulumi.get(self, "url") + diff --git a/sdk/python/lbrlabs_pulumi_dynatrace/xmatters_notification.py b/sdk/python/lbrlabs_pulumi_dynatrace/xmatters_notification.py new file mode 100644 index 00000000..bd344ebb --- /dev/null +++ b/sdk/python/lbrlabs_pulumi_dynatrace/xmatters_notification.py @@ -0,0 +1,431 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities +from . import outputs +from ._inputs import * + +__all__ = ['XmattersNotificationArgs', 'XmattersNotification'] + +@pulumi.input_type +class XmattersNotificationArgs: + def __init__(__self__, *, + active: pulumi.Input[bool], + payload: pulumi.Input[str], + profile: pulumi.Input[str], + url: pulumi.Input[str], + headers: Optional[pulumi.Input['XmattersNotificationHeadersArgs']] = None, + insecure: Optional[pulumi.Input[bool]] = None, + name: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a XmattersNotification resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[str] payload: The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] url: The URL of the WebHook endpoint + :param pulumi.Input['XmattersNotificationHeadersArgs'] headers: A list of the additional HTTP headers + :param pulumi.Input[bool] insecure: Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + :param pulumi.Input[str] name: The name of the notification configuration + """ + pulumi.set(__self__, "active", active) + pulumi.set(__self__, "payload", payload) + pulumi.set(__self__, "profile", profile) + pulumi.set(__self__, "url", url) + if headers is not None: + pulumi.set(__self__, "headers", headers) + if insecure is not None: + pulumi.set(__self__, "insecure", insecure) + if name is not None: + pulumi.set(__self__, "name", name) + + @property + @pulumi.getter + def active(self) -> pulumi.Input[bool]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: pulumi.Input[bool]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter + def payload(self) -> pulumi.Input[str]: + """ + The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "payload") + + @payload.setter + def payload(self, value: pulumi.Input[str]): + pulumi.set(self, "payload", value) + + @property + @pulumi.getter + def profile(self) -> pulumi.Input[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: pulumi.Input[str]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter + def url(self) -> pulumi.Input[str]: + """ + The URL of the WebHook endpoint + """ + return pulumi.get(self, "url") + + @url.setter + def url(self, value: pulumi.Input[str]): + pulumi.set(self, "url", value) + + @property + @pulumi.getter + def headers(self) -> Optional[pulumi.Input['XmattersNotificationHeadersArgs']]: + """ + A list of the additional HTTP headers + """ + return pulumi.get(self, "headers") + + @headers.setter + def headers(self, value: Optional[pulumi.Input['XmattersNotificationHeadersArgs']]): + pulumi.set(self, "headers", value) + + @property + @pulumi.getter + def insecure(self) -> Optional[pulumi.Input[bool]]: + """ + Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + """ + return pulumi.get(self, "insecure") + + @insecure.setter + def insecure(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "insecure", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + +@pulumi.input_type +class _XmattersNotificationState: + def __init__(__self__, *, + active: Optional[pulumi.Input[bool]] = None, + headers: Optional[pulumi.Input['XmattersNotificationHeadersArgs']] = None, + insecure: Optional[pulumi.Input[bool]] = None, + name: Optional[pulumi.Input[str]] = None, + payload: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering XmattersNotification resources. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input['XmattersNotificationHeadersArgs'] headers: A list of the additional HTTP headers + :param pulumi.Input[bool] insecure: Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] payload: The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] url: The URL of the WebHook endpoint + """ + if active is not None: + pulumi.set(__self__, "active", active) + if headers is not None: + pulumi.set(__self__, "headers", headers) + if insecure is not None: + pulumi.set(__self__, "insecure", insecure) + if name is not None: + pulumi.set(__self__, "name", name) + if payload is not None: + pulumi.set(__self__, "payload", payload) + if profile is not None: + pulumi.set(__self__, "profile", profile) + if url is not None: + pulumi.set(__self__, "url", url) + + @property + @pulumi.getter + def active(self) -> Optional[pulumi.Input[bool]]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @active.setter + def active(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "active", value) + + @property + @pulumi.getter + def headers(self) -> Optional[pulumi.Input['XmattersNotificationHeadersArgs']]: + """ + A list of the additional HTTP headers + """ + return pulumi.get(self, "headers") + + @headers.setter + def headers(self, value: Optional[pulumi.Input['XmattersNotificationHeadersArgs']]): + pulumi.set(self, "headers", value) + + @property + @pulumi.getter + def insecure(self) -> Optional[pulumi.Input[bool]]: + """ + Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + """ + return pulumi.get(self, "insecure") + + @insecure.setter + def insecure(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "insecure", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def payload(self) -> Optional[pulumi.Input[str]]: + """ + The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "payload") + + @payload.setter + def payload(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "payload", value) + + @property + @pulumi.getter + def profile(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @profile.setter + def profile(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "profile", value) + + @property + @pulumi.getter + def url(self) -> Optional[pulumi.Input[str]]: + """ + The URL of the WebHook endpoint + """ + return pulumi.get(self, "url") + + @url.setter + def url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "url", value) + + +class XmattersNotification(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + headers: Optional[pulumi.Input[pulumi.InputType['XmattersNotificationHeadersArgs']]] = None, + insecure: Optional[pulumi.Input[bool]] = None, + name: Optional[pulumi.Input[str]] = None, + payload: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + Create a XmattersNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[pulumi.InputType['XmattersNotificationHeadersArgs']] headers: A list of the additional HTTP headers + :param pulumi.Input[bool] insecure: Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] payload: The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] url: The URL of the WebHook endpoint + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: XmattersNotificationArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Create a XmattersNotification resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param XmattersNotificationArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(XmattersNotificationArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + headers: Optional[pulumi.Input[pulumi.InputType['XmattersNotificationHeadersArgs']]] = None, + insecure: Optional[pulumi.Input[bool]] = None, + name: Optional[pulumi.Input[str]] = None, + payload: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = XmattersNotificationArgs.__new__(XmattersNotificationArgs) + + if active is None and not opts.urn: + raise TypeError("Missing required property 'active'") + __props__.__dict__["active"] = active + __props__.__dict__["headers"] = headers + __props__.__dict__["insecure"] = insecure + __props__.__dict__["name"] = name + if payload is None and not opts.urn: + raise TypeError("Missing required property 'payload'") + __props__.__dict__["payload"] = payload + if profile is None and not opts.urn: + raise TypeError("Missing required property 'profile'") + __props__.__dict__["profile"] = profile + if url is None and not opts.urn: + raise TypeError("Missing required property 'url'") + __props__.__dict__["url"] = url + super(XmattersNotification, __self__).__init__( + 'dynatrace:index/xmattersNotification:XmattersNotification', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + active: Optional[pulumi.Input[bool]] = None, + headers: Optional[pulumi.Input[pulumi.InputType['XmattersNotificationHeadersArgs']]] = None, + insecure: Optional[pulumi.Input[bool]] = None, + name: Optional[pulumi.Input[str]] = None, + payload: Optional[pulumi.Input[str]] = None, + profile: Optional[pulumi.Input[str]] = None, + url: Optional[pulumi.Input[str]] = None) -> 'XmattersNotification': + """ + Get an existing XmattersNotification resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] active: The configuration is enabled (`true`) or disabled (`false`) + :param pulumi.Input[pulumi.InputType['XmattersNotificationHeadersArgs']] headers: A list of the additional HTTP headers + :param pulumi.Input[bool] insecure: Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + :param pulumi.Input[str] name: The name of the notification configuration + :param pulumi.Input[str] payload: The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + :param pulumi.Input[str] profile: The ID of the associated alerting profile + :param pulumi.Input[str] url: The URL of the WebHook endpoint + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _XmattersNotificationState.__new__(_XmattersNotificationState) + + __props__.__dict__["active"] = active + __props__.__dict__["headers"] = headers + __props__.__dict__["insecure"] = insecure + __props__.__dict__["name"] = name + __props__.__dict__["payload"] = payload + __props__.__dict__["profile"] = profile + __props__.__dict__["url"] = url + return XmattersNotification(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def active(self) -> pulumi.Output[bool]: + """ + The configuration is enabled (`true`) or disabled (`false`) + """ + return pulumi.get(self, "active") + + @property + @pulumi.getter + def headers(self) -> pulumi.Output[Optional['outputs.XmattersNotificationHeaders']]: + """ + A list of the additional HTTP headers + """ + return pulumi.get(self, "headers") + + @property + @pulumi.getter + def insecure(self) -> pulumi.Output[Optional[bool]]: + """ + Accept any, including self-signed and invalid, SSL certificate (`true`) or only trusted (`false`) certificates + """ + return pulumi.get(self, "insecure") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + The name of the notification configuration + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def payload(self) -> pulumi.Output[str]: + """ + The content of the notification message. You can use the following placeholders: * `{ImpactedEntities}`: Details about the entities impacted by the problem in form of a JSON array. * `{ImpactedEntity}`: The entity impacted by the problem or *X* impacted entities. * `{PID}`: The ID of the reported problem. * `{ProblemDetailsHTML}`: All problem event details, including root cause, as an HTML-formatted string. * `{ProblemDetailsJSON}`: All problem event details, including root cause, as a JSON object. * `{ProblemDetailsMarkdown}`: All problem event details, including root cause, as a [Markdown-formatted](https://www.markdownguide.org/cheat-sheet/) string. * `{ProblemDetailsText}`: All problem event details, including root cause, as a text-formatted string. * `{ProblemID}`: The display number of the reported problem. * `{ProblemImpact}`: The [impact level](https://www.dynatrace.com/support/help/shortlink/impact-analysis) of the problem. Possible values are `APPLICATION`, `SERVICE`, and `INFRASTRUCTURE`. * `{ProblemSeverity}`: The [severity level](https://www.dynatrace.com/support/help/shortlink/event-types) of the problem. Possible values are `AVAILABILITY`, `ERROR`, `PERFORMANCE`, `RESOURCE_CONTENTION`, and `CUSTOM_ALERT`. * `{ProblemTitle}`: A short description of the problem. * `{ProblemURL}`: The URL of the problem within Dynatrace. * `{State}`: The state of the problem. Possible values are `OPEN` and `RESOLVED`. * `{Tags}`: The list of tags that are defined for all impacted entities, separated by commas + """ + return pulumi.get(self, "payload") + + @property + @pulumi.getter + def profile(self) -> pulumi.Output[str]: + """ + The ID of the associated alerting profile + """ + return pulumi.get(self, "profile") + + @property + @pulumi.getter + def url(self) -> pulumi.Output[str]: + """ + The URL of the WebHook endpoint + """ + return pulumi.get(self, "url") +